- ベストアンサー
2次元の連想配列を順次読み込みするには?
PHP初心者です。 元の連想配列($ary1) Array ( [2004] => Array ( [03] => 03 [02] => 02 ) [2003] => Array ( [12] => 12 ) ) $ary1の値だけを$ary2に抽出する。 $ary2 = array_values($ary1); すると、こんな内容になります。 Array ( [0] => Array ( [03] => 03 [02] => 02 ) [1] => Array ( [12] => 12 ) ) ここまで来ると上位階層は$ary2[0]、[1]で読めそうですが、 下位階層まで考えると$ary2[0][03]、$ary2[0][02]になっています。 これを$ary2[0][0]、$ary2[0][1]という風に順次読み込みたいのですが、 いい方法が見つかりません。 つまり2次元の下位階層も[0]~のインデックスとしたいのです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
回答になっていないかもしれませんが foreach($ary1 as $year => $year_ary){ foreach($year_ary as $month => $month_data){ print("\$ary1[$year][$month] = $month_data<br>\n"); } } (注:インデントに全角スペースを使っています) のように順次読み込みしては、目的は達せられないのでしょうか? 0 からのインデックスに変換したいのであれば $i = 0; foreach($ary1 as $year_ary){ $j = 0; foreach($year_ary as $month_data){ $ary2[$i][$j] = $month_data; $j ++; } $i ++; } print_r($ary2); って感じでしょうか?
その他の回答 (1)
- GuruGuru22
- ベストアンサー率51% (177/346)
私はPerlで言うmap使ってこんな感じ。 $ary2 = array_values($ary1); array_walk($ary2,"test"); print_r($ary2); function test(&$val,$key){ $val = array_values($val); } 時間を計ってみたけど、#1のtoginoさんのと ほとんど同じ。
お礼
ご回答ありがとうございます。 お礼が大変遅くなり申し訳ございません。 1さんのお礼で述べた通りなのですが、 foreachの使い方が不慣れなせいで 混乱していました。
お礼
ご回答ありがとうございます。 お礼が大変遅くなり申し訳ございません。 せっかく色々教えていただいたのですが、 以下の文で目的が達成されました。 foreach($ary1[$Nen] as $Tuki){ $Nenが2004の時、$Tukiに03、02と 取り出せるのですね。