- ベストアンサー
PHPの多次元配列について
HTMLでホームページを作れる以外はプログラムに関しほぼ素人です。 環境 XAMPP1.70(最新)にてアパッチなど一括ダウンロード PHP言語にて3×4の表で以下の数値を多次元配列にて作成しようと思っているのですが、当方初心者なもので、 以下のコード(細かい部分は省略しています)、特にforeachがネストになっている部分の処理の流れがいまいちよくわかりません ~~~~~~~~~~~~~~~~~~~~~~~~~ <table border=2> <th>都市名</th> <th>最高気温</th> <th>最低気温</th> <?php $data=array( array("東京"32,25) array("名古屋",45,67) array("埼玉",32,67) array("大阪",86,34) ) foreach($data as $city){ print "<tr>"; foreach($city as $value){ print "<td>{$value}</td>" ●1回目foreachからここまでの流れがいまいち分かりません } print "</tr>"; ?> ~~~~~~~~~~~~~~~~~~~~ 一つ目のforeachにて、配列$dataが指定されていますので外側の配列を処理していくと思うのですが、具体的にどういう順番で処理されていくのでしょうか。 またforeach()の中の"$cityが最終的に$valueに格納という形になっていますが、10~13行目のarray("東京",32,25)とどのような関係で処理されていっているのか教えていただけませんでしょうか。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
希望に沿う回答かわかりませんが… (括弧やコンマなど、ところどころ足りない気がしますが打ち間違えと思ってスルーします) foreach($data as $city){ ↑cityという名前でdataの1項目目から順に取り出し、最後まで繰り返す なので最初は[array("東京"32,25)]←この配列が$cityになる print "<tr>";テーブル1行作成 foreach($city as $value){ ↑valueという名前でcityの1項目目から順に取り出し、最後まで繰り返す なので最初は「東京」。 print "<td>{$value}</td>"「東京」をテーブルの列に追加 「32」→「25」まで表示したらループ抜け } print "</tr>";内ループを抜けたら行を閉じる ↑ここまでの「表1行分の作成」を、10~13行目の各配列に対して行い、data配列がなくなったら終了です } 「そんなこと聞いてない」って感じでしたら申し訳ないです
その他の回答 (1)
foreach($data as $city){ /** これを追加して、$dataの中身をチェック */ print_r($city); print "<tr>"; /** ここはfor文で処理 START */ for($i=0;$i<count($city);$i++){ /** いったん変数に代入 */ $value=$city[$i]; print "<td>{$value}</td>"; } /** ここはfor文で処理 END */ print "</tr>"; } 思いつきで書いてしまったので、はずしていたらごめんなさい。
お礼
ありがとうございました、こういう書き方もあったのですね。 勉強なります!
お礼
非常に丁寧なご回答ありがとうございました。 なるほどなるほどそういうことだったのですね、分かりやすい解説で完全に理解いたしました。現在独力でPHPを勉強していますが、ちょくちょく質問しておりますので、またご回答願えればと思います。ありがとうございました!