【PHP】foreach文を使ってループする方法を解説!
PHPのループはfor文やwhile文のほかに、 foreach文 という処理があります。
foreach文は、配列の中に入っている要素の数分、要素の順に繰り返し処理を行います。
for文と違い、ループする回数を指定しなくてもいいのがメリットです。
この記事では、foreach文を使ってループする方法を初心者でもわかりやすいサンプルコード付きで解説していきます。
目次
foreach文の書き方
foreach文は以下のように書きます。
1 2 3 4 5 |
<?php foreach($配列名 as $要素){ //処理内容 } ?> |
$配列名は配列であり、すべてのループで、配列の現在の要素の値が$要素に割り当てられます。
内部配列ポインターが1つずつ進められ、最後の配列要素に到達して処理を終了します。
また、連想配列でも使用することができます。
以下のように書きます。
1 2 3 4 5 |
<?php foreach($配列 as $キー => $要素){ //処理内容 } ?> |
$配列名は配列であり、すべてのループで、現在の要素のキーが$キーに割り当てられます。
内部配列ポインターが1つずつ進められ、最後の配列要素に到達して処理を終了します。
foreach文の使い方
$配列名の中に入っている要素を$elementに代入しています。
そして、$elementに入っている要素を1つずつ取り出します。
foreach文は、for文の配列版みたいなものです。
配列はそれぞれ0からの番号をつけられた箱の中に1つずつ、物や値(要素)を入れてまとめられているようなイメージで、配列の中に入っている要素の数分、繰り返し処理をしてくれます。
配列の要素の数分ループするサンプルコード
配列の要素の数だけループ処理を行ってみましょう。
例
1 2 3 4 5 6 7 |
<?php $color = array("赤","青","ピンク","緑","オレンジ"); foreach($color as $element) { echo "$element\n"; } |
出力結果
赤
青
ピンク
緑
オレンジ
配列の要素の数だけループ処理が行われています。
連想配列の要素の数分ループするサンプルコード
先ほどは配列の要素の分だけを処理しましたが、連想配列でも同じことができます。
例
1 2 3 4 5 6 7 8 |
<?php $fruit = array("A" => "アップル" , "B" => "バッグ", "C" => "ねこ", "E" => "目", "F" => "足", "G" => "ゴルフ"); foreach($fruit as $key => $element){ echo $key."から始まる英語は". $element . "です。"\n"; } ?> |
出力結果
Aから始まる英語はアップルです。
Bから始まる英語はバッグです。
Cから始まる英語はねこです。
Eから始まる英語は目です。
Fから始まる英語は足です。
Gから始まる英語はゴルフです。
このようにキーから連想する要素を取り出すことができます。
breakを使ったサンプルコード
foreach文の中にbreakを使ってみましょう。
break文は繰り返しを中断します。
break文についてはfor文の「2.3 for文を抜けるサンプル」で解説してますので、そちらをご参考ください。
配列の例(break)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php $member = [ '中井', '楠', '林村', '中垣', '蚊取', ]; foreach ($member as $element) { if ($element == '中垣') { break; } echo $element. "\n"; } |
出力結果
中井
楠
林村
連想配列の例(break)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php $member = [ '中井' => '黒', '楠' => '黄', '林村' => '赤', '中垣' => '青', '蚊取' => '緑', ]; foreach ($member as $key => $element) { if ($key == '中垣') { break; } echo $key. ':'. $element. "\n"; } ?> |
出力結果
中井:黒
楠:黄
林村:赤
continue文を使ったサンプルコード
foreach文の中にcontinue文を使ってみましょう。
continueは繰り返しの途中でスキップします。
continue文についてもfor文の「2.2 for文でスキップをするサンプル」で解説してますのでそちらをご参考ください。
配列の例(continue)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php $member = [ '中井', '楠', '林村', '中垣', '蚊取', ]; foreach ($member as $element) { if ($element == '中垣') { continue; } echo $element. "\n"; } ?> |
出力結果
中井
楠
林村
蚊取
連想配列の例(continue)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php $member = [ '中井' => '黒', '楠' => '黄', '林村' => '赤', '中垣' => '青', '蚊取' => '緑', ]; foreach ($member as $key => $element) { if ($key == '中垣') { continue; } echo $key. ':'. $element. "\n"; } ?> |
出力結果
中井:黒
楠:黄
林村:赤
中垣:青
蚊取:緑
配列の格納数に合わせて繰り返し処理を行う場合
foreach文は配列の格納数に合わせて繰り返し処理を行うこともできます。
こちらは、Sossyの助太刀ブログさんの【PHP】foreach文で配列や連想配列の要素数に合わせて繰り返し処理を行う!の記事を参考にさせていただきました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php $array = [ ["赤","青","ピンク","緑","オレンジ"], ["中井","楠","林村","中垣","蚊取"] ]; foreach($array as $key1 => $colors1) { foreach($colors1 as $key => $color) { echo "$key: $color"; echo "\n"; } echo "\n"; } ?> |
出力結果
0: 赤
1: 青
2: ピンク
3: 緑
4: オレンジ
0: 中井
1: 楠
2: 林村
3: 中垣
4: 蚊取
配列の格納数に合わせて繰り返し処理が行われています。
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。