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