foreach文の記述方法

foreach文の使い方を説明していきます。
「for文」「while文」などループ処理をする関数の一つで、
配列に格納されたデータにアクセスする際に役に立ちます。
// 次の配列を使ってデータにアクセスしてみます。
$fruits = ['りんご','みかん','メロン','すいか'];
foreach ( $fruits as $key => $value ) {
// 「.」で文字列が連結できます。
echo 'key:' . $key . ' value:' . $value . '<br>';
}
//上記の実行結果
key:0 value:りんご
key:1 value:みかん
key:2 value:メロン
key:3 value:すいか
// $keyと$valueの部分は任意の変数名を指定できます。
foreach ( $fruits as $k => $v ) {
// 処理
}
ポイント
今回のケースでは、配列の中身は4つなので、4回処理が走っています。
foreach文は、配列の中身に一つずつアクセスするという事を覚えておきましょう。
実践的なパターンの紹介

特定のkeyの時だけ処理を行う
$fruits = ['りんご','みかん','メロン','すいか'];
foreach ( $fruits as $key => $value ) {
// $keyが2の時に$value(値)を出力する
if ( $key == 2 ) {
echo $value;
}
}
// 出力結果 keyが「2」である「メロン」だけ処理が行われます。
メロン
continueでスキップをする
$fruits = ['りんご','みかん','メロン','すいか'];
foreach ( $fruits as $key => $value ) {
// $keyが2の時に処理をスキップする。
if ( $key == 2 ) {
continue;
}
echo $value . '<br>';
}
// 出力結果 keyが「2」である「メロン」は処理が飛ばされています。
りんご
みかん
すいか
ポイント
「continue」と記述することで、処理をスキップすることが出来ます。
特定のデータだけ何も処理をせずに次に進めたい場合に役に立ちます。
breakで処理を抜ける
$fruits = ['りんご','みかん','メロン','すいか'];
foreach ( $fruits as $key => $value ) {
// $keyが2の時に処理を抜けるを出力する
if ( $key == 2 ) {
break;
}
echo $value . '<br>';
}
// 出力結果
りんご
みかん
ポイント
「break」と記述することで、それ以降の処理を中止することが出来ます。
たとえば、〇〇件まで処理をしたい場合、目的のデータを見つけるまで処理をする場合や、
イレギュラーなデータを見つけた時に処理を止めるなど色々なケースで役に立ちます。
ネスト(入れ子)したループで処理を抜ける
foreach ( $array1 as $key => $value ) {
foreach ( $array2 as $key => $value ) {
foreach ( $array3 as $key => $value ) {
break; // $array3のループ処理だけ抜ける
//以下のように階層を指定することで、どの層まで処理を抜けるか指定ができます。
// break 2; $array3と$array2のループ処理を抜ける
// break 3; すべてのループ処理を抜ける
}
}
}
ポイント
「break 任意の数値」と記述することで、ネストされたループをどこまで処理を抜けるか指定ができます。
上記のようにループ処理がネストされるのもあまり綺麗ではないので、極力は避けるようコードを書いていくことが大切です。

無限ループを作ってしまい、処理が終わらない!困った!
なんて事はプログラマーの皆様も一度は経験してるのではないでしょうか。
(それとも私だけかな?)