• ベストアンサー

<?php $arr = [2,4,6,8,10]

phpでこの式はどういう仕組になっているのか教えて下さい for文カウンタ変数 <?php $arr = [2,4,6,8,10]; for($i = 0; $i <= 4; $i++){ echo $arr[$i]."\n"; }

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

  • ベストアンサー
回答No.2

念のため、もう少しかみ砕いて表現もしておきます。 $arr = [2,4,6,8,10]; これは$arr = array(2,4,6,8,10); だと言いましたが、これの展開式は、 $arr = array(); // 空っぽの$arrという「配列変数」を作成。 $arr[0]=2; // 配列変数$arrの0番に2を代入 $arr[1]=4; // 配列変数$arrの1番に4を代入 $arr[2]=6; // 配列変数$arrの2番に6を代入 $arr[3]=8; // 配列変数$arrの3番に8を代入 $arr[4]=10; // 配列変数$arrの4番に10を代入 をやってるのと同じです。 なので、この式 echo $arr[$i]."\n"; 例えば$iが「2」の時ここをトレースすれば、 $arrの2番目は6ですから、 echo 6."\n"; の状態で出力されるという具合です。 ------------------------------- なお、書かれているプログラムはあくまで勉強用なので、これでいいですが、慣れてくるとこの書き方は危険すぎるので、やめたほうがいいです。 ここから先は、今は覚えなくてもいいですが、 慣れてきたら、そんなこと言ってる人がいたな~程度に 覚えておいてもらえたらOKです!。 $arr[0]=2; // 配列変数$arrの0番に2を代入 $arr[1]=4; // 配列変数$arrの1番に4を代入 //$arr[2]=6; // 配列変数$arrの2番に6を代入 をコメントアウト $arr[3]=8; // 配列変数$arrの3番に8を代入 $arr[4]=10; // 配列変数$arrの4番に10を代入 となると、2番が存在しない事があり得るのです。 複数のチームでプログラムを書くときこれでは、 危険すぎます。なので foreach ($arr as $i=>$value) { // $i は、非連番カウンタ(普通は、ここに$keyと書きます) // $valueは、それに紐づいている値 echo $value."\n"; } // もはやカウンタである$iは使用していない。 と記載するようになります。

okwaveokw
質問者

お礼

ありがとうございます

その他の回答 (1)

回答No.1

変数ダンプすればいいだけなんだが。 $arr = [2,4,6,8,10]; これは、 $arr = array(2,4,6,8,10); と同じです。 なので、配列変数を作ると同時に初期化しただけです。

okwaveokw
質問者

お礼

ありがとうございます

関連するQ&A

専門家に質問してみよう