プログラミング初心者向けに、PHPでforeach文を解説します。
サンプルコードを使って分かりやすい説明を心がけたいと思います。
こんにちはNAGAです。
今回は、PHPのforeach文の書き方について解説します。
foreach文は、データベースから取得したデータを扱ったりするのによく利用するループ処理です。
他にもループ構文には「for、while」などがありますが、foreachは配列のために用意されたPHPの構文です。
しっかりと身に着けて行きましょう!
目次
foreach文の使い方
早速ですが、foreach文の書き方です。
「東、西、南、北」をループ出力させてみました。
ソースコードをコピーして試してみてください。
一次元配列のループ
foreachを使用して、$listに入っている値を$valとして1つずつ取得してecho文で画面に表示します。
‘<br>’は改行です。
<?php $array = [ '東', '西', '南', '北']; foreach ($array as $val) { echo $val. '<br>'; } ?>
出力結果:

連想配列でも同じようにforeach文を使用できます。(出力結果は上と同じです)
<?php $array = [ 'east' => '東', 'west' => '西', 'south' => '南', 'north' => '北' ]; foreach ($array as $val) { echo $val. '<br>'; } ?>
連想配列のループ(key, value)
asの右側に「$key => $val」と書くと、$listの中にある連想配列の左型側が$keyとして取得できるようになります。
<?php $array = [ 'east' => '東', 'west' => '西', 'south' => '南', 'north' => '北' ]; foreach ($array as $key => $val) { echo $key. 'は、'. $val. 'です<br>'; } ?>
出力結果:

foreach文とは
foreach文の読み方は「フォーイーチ」と読みます。
配列の要素の数だけ処理を実行します。
構文の書き方は、一次元配列と連想配列の2種類あります。
一次元配列
foreach ($array as $val) { 処理の実行 }
連想配列
foreach ($array as $key => $val) { 処理の実行 }
ループの中断(break、continue)
forやwhileと同じように、foreach文もbreakとcontinueが使えます。
breakとcontinueの違い
こちらの2つの違いは、
- breakは、ループを抜ける
- continueは、ループを次の配列要素にスキップさせる
という使い方の違いがあります。
breakの使い方
if文の分岐でbreakを使うことで、ループ処理を抜けることができます。
次の例では、「南、北」は出力されません。
<?php $array = [ 'east' => '東', 'west' => '西', 'south' => '南', 'north' => '北' ]; foreach ($array as $key => $val) { if ($key == 'south') { // 「南」以降は処理を中断してループを抜ける break; } echo $key. 'は、'. $val. 'です<br>'; } ?>
出力結果:

continueの使い方
if文の分岐でcontinueを使うことで、ループ処理をスキップすることができます。次の例では「南」だけ出力されません。
<?php $array = [ 'east' => '東', 'west' => '西', 'south' => '南', 'north' => '北' ]; foreach ($array as $key => $val) { if ($key == 'south') { // 「南」の場合はループをスキップする continue; } echo $key. 'は、'. $val. 'です<br>'; } ?>
出力結果:

forとの違い
次の様にfor文でもforeachと同じように配列要素をループさせることができますが、ソースコードの可読性が下がりますので、基本的に配列のループはforeachを利用しましょう。
一次元配列
<?php $array = [ '東', '西', '南', '北']; for ($i=0; $i < count($array); $i++) { echo $array[$i]. '<br>'; } ?>
連想配列
連想配列をforで出力するには、list関数とeach関数を使う必要があります。
each関数はPHP7.2.0で非推奨となっているので、よほどのことがない限りforeach文を使用しましょう。
<?php $array = [ 'east' => '東', 'west' => '西', 'south' => '南', 'north' => '北' ]; for ($i=0; $i < count($array); $i++) { // list関数とeach関数で、$keyと$valを取得する list( $key, $val ) = each( $array ); echo $key. 'は、'. $val. 'です<br>'; } ?>
foreachを使って表を作ってみる
PHPのforeach文は、データベースから取得したデータをループさせることによく使います。
次の例では、データベースから取得したと仮定した配列を作成して、HTML上でループを回して住所一覧を作ってみました。
ソースコードをコピーして試してみてください。
よく使われるパターンですので、いざと言うときに役立つと思います。
<!DOCTYPE html> <html> <body> <?php // データベースから取得したと仮定して配列を作成 $people = [ ['name' => '佐藤', 'gender' => '男', 'address' => '東京都'], ['name' => '鈴木', 'gender' => '女', 'address' => '千葉県'], ['name' => '高橋', 'gender' => '男', 'address' => '埼玉県'], ]; ?> <table border="1"> <caption>住所一覧</caption> <tr bgcolor="#add8e6"> <th width="50">名前</th> <th width="50">性別</th> <th width="100">住所</th> </tr> <!-- $personは何の変数名でも良いです --> <?php foreach ($people as $person) : ?> <tr> <td><?= $person['name'] ?></td> <td><?= $person['gender'] ?></td> <td><?= $person['address'] ?></td> </tr> <?php endforeach ?> </table> </body> </html>
出力結果:

まとめ
今回は、PHPのforeach文を解説しました。
一次元配列、連想配列のループ処理や、for文との違いがあって最初は覚えるのが大変かと思いますが、他のWEBプログラミング言語でもよく使われるので、仕組みだけでも覚えておくと良いですね。
プログラミング言語は、あくまでシステムを動かすだけの手段ですので、どんな書き方であっても、まずは正しく動かすことを目的としましょう。
プログラミング学習を挫折せずに続けて成功できる人は
- 「目的目標を明確にすること」
- 「質問・相談できる環境を作ること」
- 「自己解決スキルを身に着けること」
この3つを大切にしてると思います。
ただ漠然とプログラミング学習をしているだけでは
すぐに身に付きませんので、プログラミングスクールがおすすめです。
-
テックキャンプ
本気でIT業界に転職したい方におすすめです。
転職できなかったら全額返金があります。 -
DMM WEBCAMP
国から認定されているスクールです。
やむなく離職中の方など、条件を満たしている方は教育訓練給付金が支給されます。 -
TechAcademy
1週間の無料体験があります。
気軽にスクールを体験したい方向けです。