この記事では、
配列や連想配列の値を、
順番に取り出して処理を行う、
foreach文について学びます。
foreach文
2パターンの構文があります。
配列の値だけ取りたい場合、パターン1、
配列のインデックスと値の組み合わせ、
または連想配列のキーと値の組み合わせ、を取得したい場合、
パターン2を使います。
パターン1 配列の値だけ取得
構文
1 2 3 | foreach ( 配列 as 取り出した要素) { 繰り返し実行する処理 } |
サンプルコード
1 2 3 4 5 6 7 | <?php $fruits = [ "りんご" , "バナナ" , "メロン" , "ぶどう" , "もも" ]; foreach ( $fruits as $f ){ echo "{$f}</br>\n" ; } ?> |
表示結果
解説
配列の要素だけ取得したい場合は、
foreach文というのは、以前の記事でも紹介しましたね。
パターン2a 配列のインデックスと値を取得
配列のインデックスと値を双方取得する際にも、
foreach文を使うことができます。
構文
1 2 3 | foreach ( 配列 as 配列のインデックス => 配列の値) { 繰り返し実行する処理 } |
サンプルコード
1 2 3 4 5 6 7 | <?php $fruits = [ "りんご" , "バナナ" , "メロン" , "ぶどう" , "もも" ]; foreach ( $fruits as $index => $value ){ echo "{$index} : {$value} </br>\n" ; } ?> |
表示結果
解説
配列のインデックスと値が両方取得され、
表示されていますね。
パターン2b 連想配列のキーと値を取得
連想配列のキーと値を両方取得する場合も、
foreach文が使えます。
構文
1 2 3 | foreach ( 連想配列 as 連想配列のキー => 連想配列の値) { 繰り返し実行する処理 } |
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 | <?php $arr = [ "りんご" => "赤" , "バナナ" => "黄" , "メロン" => "緑" , "ぶどう" => "紫" , ]; foreach ( $arr as $name => $color ){ echo "{$name} : {$color} </br>\n" ; } ?> |
表示結果
解説
連想配列のキーと、連想配列の値を双方取得できていますね。
以前の記事でも、連想配列にはforeach文一択であることは説明しました。
for文とforeach文、どちらを使うべきか
結論としては、foreach文をメインで使うべきです。
for文は、手動でインデックスを指定するため、
タイプミスにより、定義されていないインデックスにまでループが到達してしまうことがあります。
一方foreach文では、仕様上それが起こりえません。
逆にfor文を用いるのは、foreach文では絶対にできない複雑なループ処理を書く時だけと考えるべきです。
「for文を書きたくなったら、foreachでは駄目なのか自問する」ことを心がけてください。