![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
2次元風配列$yaoya_array[$i][$j]から、ハッシュのハッシュ%yaoyaを作成しようとしています。
$yaoya_array[$i][$j]の[$j]の部分は、添え字によって、以下のようなデータを表します。また、NULLの場合もあるとします。
#--- $yaoya_array の中身
$yaoya_array[$i][0] 品物の名前
$yaoya_array[$i][1] 品物の個数
$yaoya_array[$i][2] 品物の値段
上記のデータがダブりもありで、下のように複数個存在します。
#--- $yaoya_array の中身
$yaoya_array[0][0] = 'みかん';
$yaoya_array[0][1] = 3;
$yaoya_array[0][2] = '';
$yaoya_array[1][0] = 'みかん'
$yaoya_array[1][1] = '';
$yaoya_array[1][2] = 300;
上記のデータから、下記のようなハッシュのハッシュ%yaoyaを作成しようとしています。要するに、ばらばらに存在する品物のデータをまとめようとしています。
%yaoya = ('みかん' => {'個数' => 3, '値段' =>300});
そこで、下記のようにしてみたのですが、forループが終わった時には、'kosuu'に何も入っていません。具体的には、1回目のループで'kosuu'=>3、'nedan'=>""になり、2回目のループで'kosuu'=>""、'nedan'=>300となってしまい、'kosuu'=>3が保存されていないみたいです。ifでNULLの場合は値を代入しないようにしているつもりなのですが…。
ループ終了時に'kosuu'=>3、'nedan'=>300となるようにするには、どうすればよいのでしょうか?
#-- %yaoya の作成
for my $i( 0 .. $#yaoya_array ){
if( $yaoya_array[$i][1] ne "" ){
%yaoya = ( $yaoya_array[0] => {'kosuu' => $yaoya_array[$i][1]} );
}
if( $yaoya_array[$i][2] ne "" ){
%yaoya = ( $yaoya_array[0] => {'nedan' => $yaoya_array[$i][2]} );
}
}
No.1ベストアンサー
- 回答日時:
動作確認済み
use Data::Dumper;
#--- $yaoya_array の中身
$yaoya_array[0][0] = 'みかん';
$yaoya_array[0][1] = 3;
$yaoya_array[0][2] = '';
$yaoya_array[1][0] = 'みかん';
$yaoya_array[1][1] = '';
$yaoya_array[1][2] = 300;
#-- %yaoya の作成
for my $i( 0 .. $#yaoya_array ){
if( $yaoya_array[$i][1] ne "" ){
$yaoya{$yaoya_array[$i][0]}->{'kosuu'} = $yaoya_array[$i][1];
}
if( $yaoya_array[$i][2] ne "" ){
$yaoya{$yaoya_array[$i][0]}->{'nedan'} = $yaoya_array[$i][2];
}
}
#%yaoya = ('みかん' => {'個数' => 3, '値段' =>300});
print Dumper(\%yaoya);
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 3 2022/10/27 17:44
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 1 2022/10/27 14:21
- Visual Basic(VBA) 型が一致しませんとエラー 6 2023/07/06 20:14
- PHP ファイルの書き込みについて教えて下さい。 1 2023/03/20 12:01
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Visual Basic(VBA) VBAのフィルター操作 5 2023/08/08 09:48
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/03/02 08:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
桁数指定と四捨五入
-
画面を強制的に再描画させる方法
-
Can't use string ("0") as an ...
-
csh foreachで「*」でエラ...
-
GIFアニメをループさせたくない
-
UWSCの終了の仕方
-
perlで配列の要素が空なのを知...
-
多重ループの抜けだし方
-
アセンブラによるウェイト(WAIT...
-
VBのReturnの使い方
-
フラグについて
-
DOSコマンドのループ内のTIMEコ...
-
ボタンが押された時にループか...
-
csv形式のデータの一部を削除し...
-
CSVファイルの特定の行だけを読...
-
Escキーを押すと、中断する時と...
-
チェックデジットについて
-
CやJAVa,Rubyなどプログラミン...
-
Excel(VBA)で配列の要素数を...
-
イベントの発生を待つ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
index関数で複数個抜き出す
-
perlで2つの配列を比較する方...
-
perlでファイルの拡張子を除い...
-
[Perl]長すぎるif文を簡単にしたい
-
grep関数を用いた複数行からの抽出
-
桁数指定と四捨五入
-
配列やハッシュで中身が同じか...
-
組み合わせを作るアルゴリズム
-
複数の配列の要素を繰り返し処...
-
正規表現に関する質問
-
データベースから取得したデー...
-
ソート時同じ値がある場合、表...
-
非共通要素を抜き出す
-
配列に入った変数を二度使いたい
-
C言語の関数ポインタのイメージ...
-
Perl 戻り値の型の判定って出来...
-
QNo.3258883データベースから取...
-
ループ中でのmy宣言と処理速度
-
Perlについて教えてください!
-
配列から網羅的な文字列を生成...
おすすめ情報