基本的な書き方
foreach文はwhile文やfor文と同じループ処理を行うためのものですが、少し違った特徴を持っています。
図1が基本的な形となります。
他のループ文と異なるのは、foreach文では配列を扱うためのループ文であるため、「条件式」を必要としない点です。
foreach文に配列を渡すと、配列の先頭から値を1つずつ取り出して「配列のキー」と「配列の値」をそれぞれ取得し、{〜}内の処理を実行します。
処理が終わったらforeach(〜)へ戻り、配列の次の値を取得してまた処理を実行します。
この処理を配列の最後の値まで繰り返したらforeach文のループ処理が終了します。
コードでみるforeach文の動作
説明するよりも実際にコードを書いてみて動作を確認した方が分かりやすいと思います。
早速、下記のコードを打って実行してみましょう。
PHP コード例
<?php
$item = array();
$item[0] = array(
"name" => "ジーンズ",
"price" => 7980,
"size" => "M"
);
$item[1] = array(
"name" => "Tシャツ",
"price" => 2980,
"size" => "M"
);
$item[2] = array(
"name" => "パーカー",
"price" => 4400,
"size" => "M"
);
foreach( $item as $key => $value ) {
echo "<p>" . ($key+1) . "個目の商品<br>";
echo $value['name'] . "(サイズ:" . $value['size'] . ") " . $value['price'] . "円</p>";
}
配列に設定した商品の一覧が表示されたでしょうか。
出力例
1個目の商品
ジーンズ(サイズ:M) 7980円
2個目の商品
Tシャツ(サイズ:M) 2980円
3個目の商品
パーカー(サイズ:M) 4400円
コードの動作を順に見ていきましょう。
配列の宣言までは前章と同様なので省略します。
まずはforeach文の(〜)内で、宣言した配列を渡すところから解説します。
次の図2はforeach文に渡された配列から1つ目の値を取り出し、「キー」と「配列の値」をそれぞれforeach文の変数へセットするところをイメージしたものです。
配列のキーを$keyに代入し、取り出した値は$valueへ代入した上で{〜}内の処理を実行します。
foreach文の処理では、ここで代入した変数から「キー」と「配列の値」へアクセスすることができます。
今回のコードでは、キーは「◯◯個目の商品」の出力するところで使用し、配列の値は商品名、サイズ、価格を出力するそれぞれの箇所で使用しています。
これが、配列の長さだけ(上のコードでは3回)繰り返されます。
ちなみにキーの値は省略することもできます。
今回のコードで「◯◯個目の商品」の出力部分が不要であれば、$keyを省略して次のように書くことができます。
PHP コード例
<?php
// ----- 配列の宣言は先ほどと同じ ----- //
foreach( $item as $value ) {
//echo "<p>" . ($key+1) . "個目の商品<br>"; ※この行はコメントアウト
echo $value['name'] . "(サイズ:" . $value['size'] . ") " . $value['price'] . "円</p>";
}
まとめ
foreach文の扱い方を見てきました。
配列の処理をするときに大活躍するループ文です。
キーや配列の値を入れる変数の名前は$keyや$valueを使ってきましたが、これら変数名は自由に付けることができます。
例えば他の変数で$valueをすでに使ってしまっている場合などは「$v」や「$a」など自由に変数名を変更することができます。
この章で学んだこと
- 配列をループ文で処理する場合はforeach文を使う
- キーと配列の値は、foreach(〜)で代入した変数を使って{〜}内でアクセスすることができる
- 配列のキーが不要な場合はforeach( $array as $value ){のように省略することができる