PHPのforeachとは?基本的な使い方を初心者向けにやさしく解説
この記事ではプログラミング言語「PHP」におけるforeachの使い方について詳しく解説します。この記事は次の方におすすめできる内容です。
▼この記事がおすすめの人
- foreachの意味や概念について理解したい
- foreachの構文やコードの書き方について知りたい
- コピペで使えるサンプルコードを取得したい
▼この記事を書いたひと
フリーランスみやしも(@miyashimo_blog)です。プログラミングやWebサイト制作に関するITの情報を幅広くお届けしていきます。
PHPのforeachとは?意味やできることを解説
まずはPHPにおけるforeachとはどういったものなのか、何ができるのかといった概念的な所から確認していきましょう。
PHPのforeachについて
今回解説する「foreach(フォーイーチ)」は配列やオブジェクトに対して繰り返し処理ができるPHPの基本構文です。
foreachはforやwhileに並ぶ"繰り返し処理"を行うためのループ構文ですが、中でもforeachは配列の処理に特化しているという点で特徴的です。
foreachを扱うには前提として配列に対する理解が求められますが、使いこなせば簡潔なコードで効率的に配列を処理できる様になります。
foreachの構文2種類
foreachは次の2種類の構文に従ってコードを書くことができます。
▼foreachの構文
// 1.シンプルな配列のループ処理
foreach ($array as $value) {
// ループ内の処理
}
// 2.ループ内でキーと要素を使う場合
foreach ($array as $key => $value) {
// ループ内の処理
}
foreach構文の$arrayにはループ処理の対象になる変数を指定します。変数には配列またはオブジェクトが指定できます。別のデータ型や初期化前の変数に使うとエラーになるので注意しましょう。
asの後ろにつく$valueは配列の要素を受け取るための変数であり、foreachのループ内で利用できます。この変数にはループ毎に配列の要素が1つずつ代入されます。また「as $key => $value」の構文を使えば、$keyにその要素のキーが代入されます。
foreachの基本的な使い方
ここからは実際のコードを交えつつ、foreachの基本的な使い方について解説していきます。
配列の繰り返し処理をする
まずはforeachを使って配列の繰り返し処理をする方法を確認しましょう。
▼PHPコード
// 配列を定義する
$fruits = array("リンゴ", "オレンジ", "バナナ");
// 配列の中身を順番に出力する
foreach ($fruits as $fruit) {
echo "$fruit\n";
}
▼実行結果
リンゴ
オレンジ
バナナ
要素からキーと値の両方を取り出す
foreachで「as $key => $value」の構文を使うと、ループ内で配列の要素のキーと値の両方が使用できます。
▼PHPコード
// 配列を定義する
$ages = array("Alice" => 25, "Bob" => 30, "Charlie" => 35);
// 配列の中身を順番に出力する
foreach ($ages as $name => $age) {
echo "$name の年齢は $age 歳です。\n";
}
▼実行結果
Alice の年齢は 25 歳です。
Bob の年齢は 30 歳です。
Charlie の年齢は 35 歳です。
foreachの応用的な使い方
ここからは少し進んで、foreachの応用的な使い方について解説します。
continueを使ってループをスキップする
foreach内でcontinueを使用すると、現在のループをスキップして次のループに移ることができます。
▼PHPコード
$numbers = array(1, 2, 3, 4, 5);
foreach ($numbers as $number) {
if ($number == 3) {
continue; // 反復処理をスキップ
}
echo "Number: $number\n";
}
echo "ループが終了しました。\n";
▼実行結果
Number: 1
Number: 2
Number: 4
Number: 5
ループが終了しました。
上記のコードでは配列の要素をループして値が3である場合に、そのループ処理をスキップしています。
breakを使ってループを終了させる
foreachでbreakを使用すれば、特定の条件を満たした時にループを終了させる事ができます。
▼PHPコード
$numbers = array(1, 2, 3, 4, 5);
foreach ($numbers as $number) {
echo "Number: $number\n";
if ($number == 3) {
break; // ループを終了
}
}
echo "ループが終了しました。\n";
▼実行結果
Number: 1
Number: 2
Number: 3
ループが終了しました。
オブジェクトをループ処理する
foreachはオブジェクトのプロパティをループ処理することも可能です。
▼PHPコード
// クラスを定義
class Person {
public $name;
public $age;
public function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
}
// オブジェクトを作成
$person = new Person("Alice", 25);
// オブジェクトのプロパティをループ処理
foreach ($person as $property => $value) {
echo "$property: $value\n";
}
▼実行結果
name: Alice
age: 25
foreachは反復可能なデータとして配列とオブジェクトの2種類に対応していますが、オブジェクトの場合はプロパティに対してループ処理することが可能です。
foreachを上手に活用するコツ
このほかforeachを使ってコードを書くうえでのコツをいくつか解説します。
foreach構文を使い分ける
PHPのforeachには2つの構文があることをお伝えしましたが、いずれも次の様に考えて使い分けることができます。
▼foreach構文の使い分け
- foreach ($array as $value)
⇒foreachの中で値のみ使用する場合。シンプルな添字配列を処理する場合によく使います。 - foreach ($array as $key => $value)
⇒foreachの中でキーと値の両方を使う場合。キーが重要な情報を含む連想配列を処理する場合によく使います。
ループ構文を使い分ける
PHPにはいくつかのループ構文があり、それぞれに適した使い方があります。ここで主要なループに構文について使い分け方を紹介します。
▼ループ構文の使い分け
- for: 繰り返し回数が明確な場合や、配列の要素にインデックスを使ってアクセスする場合に適している。
- foreach: 配列やオブジェクトの要素を順に処理する場合に適している。
- while: 繰り返し回数が予め決まっていない場合や事前に条件をチェックしたい場合に適している。
公式リファレンスを活用しよう
今回はforeachを初心者向けに説明しましたが、より詳しい挙動についてはPHPの公式リファレンスで確認しましょう。リファレンスは「公式マニュアル」と同じ意味合いで使われるプログラミング用語です。
▼PHP公式サイト
この記事のまとめ
この記事ではプログラミング言語「PHP」におけるforeachの使い方について解説していきました。
いずれもプログラム開発やWebサイト制作など、幅広いPHPプログラミングの目的でご活用頂きたい情報です。
このほか当ブログではプログラミングで役立つ情報を多数掲載しています。あわせてご活用くださいませ。
▼関連記事を探す