foreachは配列やオブジェクトを反復処理するための便利な方法です
書式は下記のようになってます
$data = [10, 20, 30];
foreach ($data as $key => $value) {
1.$data[0]番目から開始します
2.$keyは配列の添え字「0」が代入されます
3.$valueは$data[0]の値「10」が代入されます
4.ブロックの終点にきたのでforeachの先頭に戻ります
5.$data[0]番目が終了したので$data[1]番目にポイントを進めます
6.$keyは配列の添え字「1」が代入されます
7.$valueは$data[1]の値「20」が代入されます
8.ブロックの終点にきたのでforeachの先頭に戻ります
9.$data[1]番目が終了したので$data[2]番目にポイントを進めます
10.$keyは配列の添え字「2」が代入されます
11.$valueは$data[2]の値「30」が代入されます
12.ブロックの終点にきたのでforeachの先頭に戻りますが次の要素が存在しないのでブロックを抜けます
}
foreach ($data as $key => $value) {
1.$data[0]番目から開始します
2.$keyは配列の添え字「0」が代入されます
3.$valueは$data[0]の値「10」が代入されます
4.ブロックの終点にきたのでforeachの先頭に戻ります
5.$data[0]番目が終了したので$data[1]番目にポイントを進めます
6.$keyは配列の添え字「1」が代入されます
7.$valueは$data[1]の値「20」が代入されます
8.ブロックの終点にきたのでforeachの先頭に戻ります
9.$data[1]番目が終了したので$data[2]番目にポイントを進めます
10.$keyは配列の添え字「2」が代入されます
11.$valueは$data[2]の値「30」が代入されます
12.ブロックの終点にきたのでforeachの先頭に戻りますが次の要素が存在しないのでブロックを抜けます
}
foreachは配列の要素数だけループし、ブロックに到達したら、配列の要素を次へ進めます
下記の図の通りforeach文は配列の要素を先頭から順番に呼び出しているだけの繰り返し処理です
foreach文をサンプルプログラムで確認してみましょう
<?php
// 配列にデータをセット
$data = [10, 20, 30];
// 配列の要素をループさせる
foreach ($data as $key => $value) {
echo $value . PHP_EOL;
}
// $keyは省略可能なので省略してみる
foreach ($data as $value) {
echo $value . PHP_EOL;
}
//連想配列を宣言
$items = [
'スマホ' => 'iphone',
'パソコン' => 'ノートパソコン',
];
//連想配列を出力
foreach ($items as $key => $value) {
// keyと値を出力
echo $key . ':' . $value . PHP_EOL;
}
// もう少し複雑にしてみます
$items = [
'スマホ' => ['iphone', 'エクスペリア', 'ギャラクシー'],
'パソコン' => ['ノートパソコン', 'デスクトップ', 'モバイルPC'],
];
// 連想配列をループ
foreach ($items as $key => $array) {
echo 'カテゴリー:'.$key . '一覧は下記の通りになります'.PHP_EOL;
// 連想配列の中の連想配列をループ
foreach ($array as $index => $value) {
echo $index .'.'. $value . PHP_EOL;
}
}
?>
上記のコードをコピペして下記のサイトで実際にPHPコードを実行してみましょう
本サイトでは、基礎的な学習は開発環境を構築しないで、webで実行します。
コピペで動作したら、今度は自分で実際にコードをトレースしてコーディングしてみましょう
効率的にプログラムを学習するなら必ず、手打ちすることです。
打つことで、アウトプットして覚えていきます。
ブラウザでプログラミング・実行ができる「オンライン実行環境」| paiza.IO
paiza.IOはオンラインですぐにプログラミングが始められる、オンライン実行環境です。Java,Ruby,Python,PHP,Perlなど主要24言語に対応。プログラミング学習にも。