PHP

第11章 foreach文

  1. 最終更新日:
  2. 公開日:

この章ではwhile文for文に続いてループの基本構文の1つであるforeach文について学んでいきます。このforeach文を含めた3種類のループ処理を扱えると、書けるコードの幅がぐっと広がるはずです。

基本的な書き方

foreach文while文for文と同じループ処理を行うためのものですが、少し違った特徴を持っています。
図1が基本的な形となります。

図1:

foreach文の基本的な形

他のループ文と異なるのは、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文の変数へセットするところをイメージしたものです。

図2:

配列から値を取り出すイメージ

配列のキーを$keyに代入し、取り出した値は$valueへ代入した上で{}内の処理を実行します。
foreach文の処理では、ここで代入した変数から「キー」と「配列の値」へアクセスすることができます。
今回のコードでは、キーは「◯◯個目の商品」の出力するところで使用し、配列の値は商品名、サイズ、価格を出力するそれぞれの箇所で使用しています。

図3:

「キー」「配列の値」を出力している関係イメージ

これが、配列の長さだけ(上のコードでは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 ){のように省略することができる

記事一覧

  1. 第1章 PHPが動く仕組み
  2. 第2章 変数と定数
  3. 第3章 配列
  4. 第4章 スーパーグローバル
  5. 第5章 クッキーとセッション
  6. 第6章 サーバー情報の取得
  7. 第7章 if文
  8. 第8章 switch文
  9. 第9章 while文
  10. 第10章 for文
  11. 第11章 foreach文
  12. 第12章 独自の関数
  13. 第13章 オブジェクト指向
  14. 第14章 クラス
  15. 第15章 オブジェクト

記事一覧