Pages

Subscribe:

2011-10-20

PHPの基礎~配列の繰り返し(foreach構文)

今回は繰り返しの構文のひとつ、foreach構文についてまとめます。
for文の最初で少し触れましたが、
foreach文は配列の中身を繰り返すための構文です。

これまでの構文とは少し毛色が違う繰り返しになるので、
繰り返しのひとつと言うよりは配列と一緒に使うものだと切り離した方が
覚えやすいかと思います。


for文でも配列を繰り返すことが可能でした(前々回記事参照)が、
繰り返す回数を自分で決めるという性質が、
配列を繰り返すのに向いていないという面があります。
配列の値を増やすと、for文の回数を指定する部分を変更しなくてはなりません。

一方、foreach文は配列に入っている数分をすべて繰り返し処理してくれます。
例えば、配列に入れる値を後から増やしたとしても、
foreach文を書き換える必要がないという利点があります。


foreach文の書式は以下の通りです。
foreach ( 配列名 as 配列キー => 配列値 ) {
          配列の要素が繰り返される間、実行される処理
}
少し複雑な形をしていますが、配列に対応する並びになっています。
(配列の名前、配列の添え字(key)を格納する変数、
配列の値(value)を格納するという順番)
「配列キー」・「配列値」はそれぞれ別の名前の変数に格納します。
また連想配列のときに登場した「=>」が再び使われています。
セットで覚えておくと忘れにくいかも知れません。

実際に前回の連想配列と組み合わせて書いてみます。
<?php
$todofuken = array('東京'=>'新宿区','神奈川'=>'横浜市','千葉'=>'千葉市','埼玉'=>'さいたま市');

foreach($todofuken as $k => $v){
    echo $k.'の県庁所在地は'.$v.'です。<br>';
}
?>
「$todofuken」という配列を「$k」と「$v」に分けてそれぞれ表示させています。
ブラウザでは次のように表示されます。

ここではkeyとvalueにちなんで「$k」「$v」と変数名を決めていますが、
とくにこれを使わなければならないわけではなく、
プログラムの内容に沿って分かりやすい変数名をつけると良いようです。
名前を3つ分考えるのが大変という話もありますが…

配列値だけを取得

foreach文で処理に必要なものが値だけだった場合、
配列キーの部分を省略することができます。
「as」のあとにすぐ値となる変数の名前を書きます。

先ほどの例で値だけ取得すると以下のようになります。
<?php
$todofuken = array('東京'=>'新宿区','神奈川'=>'横浜市','千葉'=>'千葉市','埼玉'=>'さいたま市');

foreach($todofuken as $v){
    echo $k.'の県庁所在地は'.$v.'です。<br>';
}
?>
ここでは配列キーも取得したものと比較するためにあえて表示部分の処理を
同じにしています。
取得したのが値だけなので表示できるのも値だけというのが以下の画像で
分かります。


配列とforeach文の組み合わせは実際のプログラムでも良く使われるセットの
ようなものです。
感覚的に理解するのが難しいのですが、
この考え方が今後よく登場するようになるので、
だんだん染みついてくるのではないかと思います。

0 件のコメント:

コメントを投稿