• Xでシェア
  • LINEでシェア
  • このエントリーをはてなブックマークに追加

PHP Foreachの使い方

この記事のポイント

  • PHPのForeach文|配列・連想配列を簡単に処理できるループ構文
  • キーと値の両方を取得可能な柔軟な構文設計
  • データベース結果やJSONデータ処理に最適な仕組み

目次

PHPのForeach文とは?

PHPのForeach文は、配列や連想配列の要素を簡単に反復処理するための専用ループ構文です。

Foreach文では、通常のfor文やwhile文のように、インデックスを管理する必要がありません。また、配列の各要素に直接アクセスできるため、コードがシンプルで読みやすくなります。

Foreach文が特に威力を発揮するのは、連想配列(キーと値のペア)を処理する際です。データベースから取得した結果セットやJSONから変換されたデータ構造などを扱う場合にとても役立ちます。

また、Foreach文は、配列の先頭から順番に処理を行い、すべての要素を漏れなく処理できるため、データ処理において欠かせない機能となっています。PHP初心者にとっても理解しやすく、実務でも頻繁に使用される重要な制御構文です。

【関連】
PHPをもっと詳しく学ぶならpaizaラーニング

基本構文

PHPのForeach文には、主に2つの基本構文があります。1つ目は値のみを取得する基本形式です。配列の各要素の値だけを順番に取り出して処理します。

foreach (配列 as 値変数) { // 値変数を使った処理 }

2つ目はキーと値の両方を取得する形式です。連想配列を処理する際に特に役立つでしょう。

foreach (配列 as キー変数 => 値変数) { // キー変数と値変数を使った処理 }

どちらの構文でも、配列内の各要素に対して処理を繰り返し実行します。for文との違いは、カウンタ変数の初期化や条件チェック、インクリメントなどを明示的に記述する必要がない点です。また、配列の長さを事前に知る必要もありません。

Foreach文には、連想配列のキーが数値ではなく文字列の場合でも問題なく処理できる特徴もあります。それはつまり、さまざまなデータ構造の操作に対して、柔軟な対応ができることを意味するでしょう。この特徴は、Foreach文にコードのシンプルさやバグ発生のしにくさをもたらします。

実用例

Foreach文は、PHPでデータを処理する際にとてもよく使われる構文です。ここでは実際のコード例を通じて、さまざまな状況でForeach文がどのように活用できるかを見ていきましょう。

このセクションで紹介するコード例は、皆さんの開発環境に実装できるシンプルなものばかりです。Foreach文の特徴を理解し、実際の開発環境で使えるようになるためには、何度もコードに触れる経験が不可欠です。

開発環境内にコードを貼り付け、出力結果などを見ていると、解説文を読んだだけではイメージできなかったForeach文の特徴も深く理解できるようになるでしょう。

基本的な配列の処理

最も基本的なForeach文の使い方は、以下のように単純な配列の各要素を順番に処理することです。このコード例では、動物の名前が入った配列から各動物名を取り出して表示しています。

<?php $animals = ["イヌ", "ネコ", "ウサギ", "ハムスター"]; foreach ($animals as $animal) { echo $animal . "は可愛い動物です。\n"; } ?>

出力結果:

イヌは可愛い動物です。
ネコは可愛い動物です。
ウサギは可愛い動物です。
ハムスターは可愛い動物です。

連想配列の処理

連想配列とは、文字列などの非負整数以外のデータを添字として使える配列のことです。連想配列を使うと、キーと値のペアを使って情報を関連付けることが可能です。以下のように動物とその特徴を持つ連想配列を処理する例では、キーが動物名、値がその特徴を表しています。

<?php $animalTraits = [ "イヌ" => "忠実", "ネコ" => "気まぐれ", "ウサギ" => "臆病" ]; foreach ($animalTraits as $animal => $trait) { echo $animal . "は" . $trait . "な動物です。\n"; } ?>

出力結果:

イヌは忠実な動物です。
ネコは気まぐれな動物です。
ウサギは臆病な動物です。

ネストされた配列の処理

多次元配列では、以下のようにforeach文を入れ子にして処理できます。以下のコード例で行っているのは、動物の分類とその例を含む配列の処理です。外側のループで分類を取り出し、内側のループで各分類の動物を処理しています。

<?php $animalCategories = [ "哺乳類" => ["イヌ", "ネコ", "ウマ"], "鳥類" => ["ワシ", "スズメ", "カラス"] ]; foreach ($animalCategories as $category => $animals) { echo "{$category}: "; foreach ($animals as $animal) { echo $animal . " "; } echo "\n"; } ?>

出力結果:

哺乳類: イヌ ネコ ウマ
鳥類: ワシ スズメ カラス

参照渡しによる値の変更

参照渡しとは、プログラム内で関数などを渡す引数として変数などを指定するときに、呼び出し先でも同じ実体を参照するように渡すことです。参照渡しを使うと、ループ内で配列の値を直接変更できます。以下は、動物名を大文字に変換するコード例です。具体的には、&記号を使って参照渡しを行い、各要素を変更しています。

<?php $animals = ["dog", "cat", "rabbit", "panda"]; foreach ($animals as &$animal) { $animal = mb_strtoupper($animal); } unset($animal); // 参照を解除 print_r($animals); ?>

出力結果:

Array
(
   [0] => DOG
   [1] => CAT
   [2] => RABBIT
   [3] => PANDA
)

キーと値の両方を使用

Foreach文を使うと、インデックスと値の両方を活用してリストを作成することも可能です。配列のキー(インデックス)を使って番号付きリストを作成し、各動物名と共に表示するテクニックになります。

<?php $animals = ["キリン", "ゾウ", "ライオン", "トラ"]; foreach ($animals as $index => $animal) { echo "動物 #" . ($index + 1) . ": " . $animal . "\n"; } ?>

出力結果:

動物 #1: キリン
動物 #2: ゾウ
動物 #3: ライオン
動物 #4: トラ

オブジェクトのプロパティ処理

オブジェクトのプロパティも、Foreach文で処理することが可能です。以下のコード例では、Animalクラスのインスタンスを作成し、そのプロパティを取り出して表示します。オブジェクト指向プログラミングと組み合わせた使い方といえるでしょう。

<?php class Animal { public $name = "ポチ"; public $species = "イヌ"; } $pet = new Animal(); foreach ($pet as $property => $value) { echo $property . ": " . $value . "\n"; } ?>

出力結果:

name: ポチ
species: イヌ

配列フィルタリング

以下のコード例で示されているのは、動物とその体重の連想配列から、100kg以上の動物だけを抽出する処理です。このコード例を使うと、条件に合致する要素だけを新しい配列に収集できます。foreach文を使うことで、条件判定と新配列への追加が行えるでしょう。

<?php $animalWeights = [ "ゾウ" => 5000, "キリン" => 1200, "ライオン" => 190, "ネコ" => 4 ]; $largeAnimals = []; foreach ($animalWeights as $animal => $weight) { if ($weight >= 100) { $largeAnimals[$animal] = $weight; } } print_r($largeAnimals); ?>

出力結果:

Array
(
    [ゾウ] => 5000
    [キリン] => 1200
    [ライオン] => 190
)

複数の配列の同時処理

関連する複数の配列を同時に処理するうえでは、foreach文とインデックスを組み合わせて使用します。以下のコード例で行っているのは、動物とその生息地の情報を関連付けて表示する処理です。forループでインデックスを共有して2つの配列を処理しています。

<?php $animals = ["ペンギン", "ホッキョクグマ", "トナカイ"]; $habitats = ["南極", "北極", "ツンドラ"]; for ($i = 0; $i < count($animals); $i++) { echo $animals[$i] . "は" . $habitats[$i] . "に住んでいます。\n"; } ?>

出力結果:

ペンギンは南極に住んでいます。
ホッキョクグマは北極に住んでいます。
トナカイはツンドラに住んでいます。

まとめ

PHPのForeach文は、配列や連想配列を簡潔かつ効率的に処理するための強力ツールです。

基本的な値の取得からキーと値のペア処理、参照渡しを使った値の変更、多次元配列の操作といったさまざまなデータ処理のシナリオに対応できます。特に連想配列を扱う際には、インデックスを管理する必要がなく、直感的なコードを書くことができるため、開発効率が大幅な向上が期待できるでしょう。

また、Foreach文は、データベースの結果セットやAPI応答のような複雑なデータ構造を処理するうえでも非常に役立ちます。PHPプログラミングのあらゆるレベルで活用できる基本構文として、初心者の方は早めにマスターしておきましょう。

レベルを更に上げたい方はpaizaプログラミングスキルチェックへ

  1. paizaラーニングトップ
  2. リファレンス
  3. PHPのリファレンス記事一覧
  4. PHP Foreachの使い方