みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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)とどのような関係で処理されていっているのか教えていただけませんでしょうか。

よろしくお願いいたします。

投稿日時 - 2009-03-27 23:15:31

QNo.4832576

すぐに回答ほしいです

質問者が選んだベストアンサー

希望に沿う回答かわかりませんが…
(括弧やコンマなど、ところどころ足りない気がしますが打ち間違えと思ってスルーします)

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配列がなくなったら終了です
}

「そんなこと聞いてない」って感じでしたら申し訳ないです

投稿日時 - 2009-03-29 00:08:57

お礼

非常に丁寧なご回答ありがとうございました。
なるほどなるほどそういうことだったのですね、分かりやすい解説で完全に理解いたしました。現在独力でPHPを勉強していますが、ちょくちょく質問しておりますので、またご回答願えればと思います。ありがとうございました!

投稿日時 - 2009-03-30 01:05:54

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.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>";
}

思いつきで書いてしまったので、はずしていたらごめんなさい。

投稿日時 - 2009-03-27 23:27:01

お礼

ありがとうございました、こういう書き方もあったのですね。
勉強なります!

投稿日時 - 2009-03-30 01:06:38

あなたにオススメの質問