【PHP】foreach文を使った繰り返し処理を解説!連想配列の使用方法

【PHP】foreach文を使った繰り返し処理を解説!連想配列の使用方法

PHPの繰り返し処理の一つにforeach文があります。

「配列から値を取り出す」「配列キーを変数に格納する」など、配列を扱うときに頻繁に使用するため、PHPでプログラムを書きたい方は覚えておくと便利です。

この記事では、サンプルコードや出力例を示しながら、PHPのforeach文の概要や応用例について解説します。

PHPのforeach文とは?

PHPのforeach文とは、配列に含まれる要素を繰り返し処理で一つ一つ取得したり、逆に配列の値を変数に格納したりする際に使用する構文です。
配列には長さがあり、値の数だけ繰り返し処理を行い、配列内の要素を変数に代入します。ちなみに、配列の要素数は、count関数で取得することが可能です。

foreach文は、配列の値を取り出し、それを変数に代入するだけなので、配列の要素を変更することができません。

具体的に、PHPのforeach文は下記のように記載します。

また、実行結果は下記の通りです。

配列要素分の繰り返し処理を行う

foreachは、配列要素分の繰り返し処理を行います。

上記で示したサンプル例をもとに、ループごとでどのような処理をしているのかについては下記の通りです。

  1. 配列『arr』の0番目「鈴木」を変数『data』に代入する
  2. 鈴木が代入された変数『data』を出力する
  3. HTMLの改行コード<br>を出力
  4. foreachのブロックの最後に到達したので、foreach文の先頭に戻る
  5. 配列『arr』の1番目「高橋」を変数『data』に代入する
  6. 高橋が代入された変数『data』を出力する
  7. HTMLの改行コード<br>を出力
  8. foreachのブロックの最後に到達したので、foreach文の先頭に戻る
  9. 配列『arr』の2番目「山田」を変数『data』に代入する
  10. 山田が代入された変数『data』を出力する
  11. HTMLの改行コード<br>を出力
  12. 配列の要素の長さに到達したので、foreach文の処理から抜ける

for文・while文と違い繰り返しの終了条件がない

PHPの繰り返し処理には、foreachのほかにも、for文やwhile文があります。実際に、for文やwhile文と何が違うのかわからないという方もいるのではないでしょうか?

違いをご説明するために、上記で示したサンプルコードをfor文やwhile文に書き換えてみました。

【for文】

【while文】

foreachとfor文、while文の違いは、繰り返しの終了条件の有無です。

foreach文には繰り返し処理終了の条件がないのに対して、for文やwhile文にはどこまで繰り返すのかが設定されています。 例えば、for文の場合、「$iに格納されている数値が$arraNum未満なら処理を実行する」というイメージです。

一方、foreachは細かな設定はなく、配列の要素の数分の繰り返し処理を行います。そのため、配列のすべての要素に対して処理を実行したいときに有効な構文です。

\文字より動画で学びたいあなたへ/

Udemyで講座を探す >

連想配列を使ったforeach文

連想配列の場合は、先程の「仮変数」の代わりに「仮キー変数 => 仮変数値」を指定することで、連想配列のデータから一組のキーと値が取得できるようになります。

foreachでは、このように連想配列のkeyとvalueをそれぞれの別の変数に代入することができます。

PHP foreach文の応用例

次に、PHP foreach文の応用例について解説します。

break:繰り返し処理を中断

foreach文の中でif文を使用し条件を設定することで、繰り返し処理を中断できます。具体的なサンプルコードは下記の通りです。

上記のサンプルコードでは、配列に名前とテストの結果の点数が入った配列を用意し、一人でもテストの点数が40未満の人がいたら処理を中断し、「不合格者がいました」と報告しています。

ちなみに、break文はfor文やwhile文でも使用可能です。

continue:処理をスキップ

continue文は、if文で設定した条件に当てはまる場合、処理をスキップする構文です。continue文は、for文やwhile文はもちろんのこと、foreachでも使用できます。具体的なサンプルコードや出力例は下記の通りです。

上記のサンプルコードの場合、$pointに40以上の数値が格納されている場合、foreachの処理をスキップします。それ以下の数値の場合、名前や点数が出力されるというコードです。

配列の要素を書き換える

通常、foreachを使用する場合、要素の中身を書き換えることはできません。しかし、参照渡しをすることで、配列の要素に直接アクセスすることができます。参照渡しは、下記のように『&』を使用するのが一般的です。

早速、下記にサンプルコードを記載します。

PHPでforeach文を使った処理を書いてみよう

PHPのforeachで連想配列やbreak文、continue文を学びました。それでは、最後にこれらを使用したサンプルコードを作成します。

1~10までの数値が格納されている配列を用意し、foreach文を使いその数値に1をプラスした値が出力されます。しかし、数値が5のときはbreak文で処理をスキップし、数値が9のときに処理を終了するようにしました。

まとめ

今回は、PHPのforeach文をサンプルコード付きで詳しく解説しました。

foreachは繰り返し処理終了条件を入れる必要がないため、非常にシンプルなコードでループ処理を実現することができます。 また、break文やcontinue文も使用できるため、格納された変数によって処理実行の有無や中断を決めることが可能です。さらに、参照渡しをすれば、配列の要素に直接アクセスすることもできます。

foreach文を覚えることでPHPプログラミングの理解が一層深まるため、この機会に習得してみてはいかがでしょうか?