PHP - 配列をループする際に使えるforeach

PHPのforeachは、配列をループする際に使える便利な関数です。

今回は「foreach」関数の説明をしてみます。

foreach - php.net

foreachが使えるのは配列とオブジェクトのみとなっていて、別の変数に使うとエラーとなります。

PHPマニュアルで「foreach」を確認してみましょう。

参考記事
foreach - php.net

foreachでは、配列と連想配列に対して使用する2種類の書き方があります。

【foreach】配列に対して使用する場合

配列に対して使用する場合は、 foreach ($array as $value) {} のように書きます。
※$arrayは配列です。

<?php
  $array = array("東京", "神奈川", "千葉", "埼玉");

  foreach ($array as $value) {
    echo $value . "<br />";
  }

実行結果1

東京
神奈川
千葉
埼玉

こんな書き方もよくやります。

<?php
  $array = array("東京", "神奈川", "千葉", "埼玉");
  $i = 0;

  foreach ($array as $value) {
    if($i === 0) {
      echo "<strong>" . $value . "で消耗しているよ</strong><br />";
    } else {
      echo $i . ': ' . $value . "<br />";

      // こんなふうに書いても変数が展開されます↓
      // echo "{$i}: {$value}"}

    $i++;
  }

実行結果2

東京で消耗しているよ
1: 神奈川
2: 千葉
3: 埼玉

【foreach】連想配列に対して使用する場合

連想配列に対して使用する場合は、 foreach ($array as $key => $value) {} のように書きます。

※$arrayは連想配列です。$keyは連想配列のキー、$valueは要素の値となります。

<?php
  $array = array(
    "tokyo"    => "東京",
    "kanagawa" => "神奈川",
    "chiba"    => "千葉県",
    "saitama"  => "埼玉県"
  );

  foreach($array as $key => $value){
    if($key == 'saitama') {
      echo $value . "には海がありません(´・ω・`)" . "<br />";
    } else {
      echo $value . "には海があります。" . "<br />";
    }
  }

実行結果

東京には海があります。
神奈川には海があります。
千葉県には海があります。
埼玉県には海がありません(´・ω・`)

無事に連想配列でも動作しました。
 

最後に

foreachを使うと、配列の個数分でしかループしないので、forやwhile文に比べると初心者が無限ループに陥ることが少ないですね。

ただし、配列の数があまりにも多いような場合は、1回ループを実行したらprint_r、exitして中身を確認してみる、特定の回数でbreakしてループを抜けてみるなど、慎重に実装したいところですね。

以上、foreach文の紹介でした!

ABOUTこの記事を書いた人

とみっち

数年前までバンド活動してました。現在はブログを運営して暮らしています。サウンドクリエイター / Webクリエイター。息子は6歳。長野市出身。埼玉県内を転々(東松山→志木→川越)、現在は本庄移住して法人化しました。社員4名で情報発信をしています。 【興味】音/Web/車(GolfR Variant等)/田舎/旅/酒 ※自然の音からデスメタルまで聴きますw 【主な運営サイト】 ザ・サイベース おと風景 とみっちWeb 詳しいプロフィール