Developer

【PHP基礎】 反復処理④ foreach文
2020.11.16
Lv1

【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では駄目なのか自問する」ことを心がけてください。

PHP基礎 連載目次リンク

PHP基礎 連載目次