PHPの制御文に foreach 文という構造があります。最初は軽視していた制御文だったのですが*1、ちょっと前にかなり重要であることを認識させられました。最近はPerlとかでもあるようです。
基本構造
foreach(配列名 as 値用の変数) { 処理文 }
基本はこんな感じです。配列名は普通に配列名、値用の変数というのはforeach文の中で使う値の変数のことで、Cでいうi*2になる変数です。PHPにもfor文はあります。Cを始め大半の言語で用いられている構文と同様です。
for(初期値; 範囲; カウントアップ処理) { 処理文 }
とまぁ、こんな感じです。なぜfor文ではダメなのでしょうか。
for文とforeach文の違い
例えば、配列に文字が入っていたとします。
$a = array("りんご", "まど", "ぺんぎん");
この配列の中身を全部表示したい時なんかには、for文では使い勝手がすごく悪いわけです。これが最たる理由*3です。
$a = array("りんご", "まど", "ぺんぎん"); foreach($a as $val) { echo $val."<br>"; }
こんな感じにしてやると
りんご まど ぺんぎん
こんな風に表示してくれるわけですね。
他に、
foreach(配列名 as キー変数 => 値用の変数) {
処理
}
という書き方もあって、これを使うと連想配列も簡単に表示できるようになるわけです。
$a = array("りんご" => 1, "まど" => 2, "ぺんぎん" => 3); foreach($a as $key => $val) { echo $key.":".$val."<br>"; }
とすると
1:りんご 2:まど 3:ぺんぎん
と表示されるわけです。ちなみに、
$a = array("りんご", "まど", "ぺんぎん"); foreach($a as $key => $val) { echo $key.":".$val."<br>"; }
とすると、
0:りんご 1:まど 2:ぺんぎん
となります。ふと、備忘録をつけておこうと思ったので。最初はこの構文わけわかんなかったなー。