PHPのforeachは、配列をループする際に使える便利な関数です。
今回は「foreach」関数の説明をしてみます。
foreach – php.net
foreachが使えるのは配列とオブジェクトのみとなっていて、別の変数に使うとエラーとなります。
PHPマニュアルで「foreach」を確認してみましょう。
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: 埼玉
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文の紹介でした!