最終更新日:
公開日:
入門
第11章 foreach文
この章では、while文・for文に続いてループの基本構文であるforeach文について学んでいきます。このforeach文を含めた3種類のループ処理を扱えると、書けるコードの幅がぐっと広がるはずです。
目次
基本的な書き方
foreach文は、while文やfor文と同じループ処理を行うためのものですが、少し違った特徴を持っています。
図1が基本的な形となります。
他のループ文と異なるのは、foreach文では配列を扱うためのループ文であるため、「条件式」を必要としない点です。
foreach文に配列を渡すと、配列の先頭から値を1つずつ取り出して「配列のキー」と「配列の値」をそれぞれ取得し、{〜}内の処理を実行します。
処理が終わったらforeach(〜)へ戻り、配列の次の値を取得してまた処理を実行します。この処理を、配列の最後の値まで繰り返したらforeach文が終了します。
コードでみるforeach文の動作
ツラツラと説明するよりも、実際にコードを書いてみて動作を確認した方が分かりやすいはずです。
早速、下記のコードを打って実行してみましょう。
コード例
<?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
// ----- 配列の宣言は先ほどと同じ ----- //
foreach( $item as $value ) {
//echo "<p>" . ($key+1) . "個目の商品<br>"; ※この行はコメントアウト
echo $value['name'] . "(サイズ:" . $value['size'] . ") " . $value['price'] . "円</p>";
}
まとめ
foreach文の扱い方を見てきました。配列の処理をするときに大活躍するループ文です。
キーや配列の値を入れる変数に$keyや$valueを使ってきましたが、ここの変数名は自由に付けることができます。多くの場合は上記の書き方で問題ありませんが、「すでに他の部分で$value変数を使ってしまっている」などの場合は必要に応じて変更してください。
この章で学んだこと
- 配列をループ文で処理する場合は「foreach文」を使う
- キーと配列の値は、foreach(〜)で代入した変数を使って{〜}内でアクセスすることができる
- 配列のキーが不要な場合はforeach( $array as $value ){のように省略することができる