【初心者向け】PHPのforeach文完全ガイド

PHP

「配列の中身を順番に見ていきたいけど、どう書けばいいの?」
「for文は難しそうだから、もっと簡単な方法はないかな?」

そんなときに役立つのが、PHPのforeach文です。

この記事では、foreach文の基本から実際の使い方まで、プログラミング初心者の方にもわかりやすく説明します。

スポンサーリンク

foreach文ってなに?

機能の説明

foreach文は、配列の中身を順番に取り出して処理する命令です。

配列とは、複数のデータをまとめて入れておく箱のようなものです。foreach文を使うと、その箱から一つずつデータを取り出して、同じ作業を繰り返すことができます。

foreach文の特徴

  • 配列の中身を自動的に順番に取り出す
  • 配列にいくつデータが入っているか数える必要がない
  • 書き方が簡単でわかりやすい

こんなときに便利

ショッピングサイトで 商品リストを順番に表示するとき

お問い合わせフォームで 複数の項目をまとめてチェックするとき

データベースから 取得したデータを一覧表示するとき

foreach文の基本的な書き方

構文の説明

foreach文には、2つの書き方があります。

パターン1:値だけを取り出す

foreach (配列 as 変数名) {
    // 繰り返したい処理
}

パターン2:キーと値を両方取り出す

foreach (配列 as キー変数 => 値変数) {
    // 繰り返したい処理
}

「キー」とは、データにつけられた名前や番号のことです。「値」は、実際に入っているデータのことです。

実際に使ってみよう

例1:果物リストを表示する

説明 配列に入っている果物の名前を、順番に表示してみましょう。

コード例

<?php
$fruits = ["りんご", "みかん", "ぶどう"];

foreach ($fruits as $fruit) {
    echo $fruit . "\n";
}
?>

実行結果

りんご
みかん
ぶどう

解説

  • $fruitsという配列に、3つの果物が入っています
  • foreach文で、一つずつ果物を$fruitという変数に取り出します
  • echoで画面に表示します

例2:ユーザー情報を表示する

説明 名前、年齢、職業といった情報がセットになったデータを表示してみましょう。

コード例

<?php
$user = [
    "名前" => "田中",
    "年齢" => 30,
    "職業" => "エンジニア"
];

foreach ($user as $key => $value) {
    echo $key . ":" . $value . "\n";
}
?>

実行結果

名前:田中
年齢:30
職業:エンジニア

解説

  • $userという配列に、名前・年齢・職業の情報が入っています
  • $keyにはラベル(「名前」「年齢」など)が入ります
  • $valueには実際の値(「田中」「30」など)が入ります

例3:数値を2倍にする

説明 配列に入っている数値をすべて2倍にしてみましょう。

コード例

<?php
$numbers = [1, 2, 3, 4, 5];

foreach ($numbers as &$num) {
    $num = $num * 2;
}

// 結果を確認
foreach ($numbers as $num) {
    echo $num . " ";
}
?>

実行結果

2 4 6 8 10

解説

  • &$num&は、元の配列の値を直接変更するための記号です
  • この書き方をしないと、元の配列は変わりません

foreach文の良いところと注意点

良いところ

簡単に書ける for文に比べて、書くコードが短くて済みます

配列の大きさを気にしなくていい 配列にいくつデータが入っているか数える必要がありません

連想配列にも使える 名前がついたデータ(連想配列)にも簡単に対応できます

注意しておきたいこと

値を変更するときは&をつける 配列の中身を変更したい場合は、変数名の前に&をつけましょう

// ❌ 元の配列は変わらない
foreach ($numbers as $num) {
    $num = $num * 2;
}

// ✅ 元の配列が変わる
foreach ($numbers as &$num) {
    $num = $num * 2;
}

配列以外には使えない foreach文は配列専用です。普通の変数には使えません

参照を使った後は注意 &を使った後は、変数の扱いに気をつけましょう

他のループ文との違い

ループ文特徴使う場面
foreach配列専用、簡単配列の全部を処理したいとき
for回数を指定、細かい制御決まった回数だけ繰り返したいとき
while条件で制御条件を満たしている間だけ繰り返したいとき

使い分けのコツ

  • 配列を処理する → foreach
  • 10回繰り返す → for
  • 条件に合う間だけ → while

実際の現場でよく使う例

Webフォームのデータ処理

説明 お問い合わせフォームから送られてきた複数の項目をチェックする

コード例

<?php
$form_data = [
    "名前" => "田中太郎",
    "メール" => "tanaka@example.com",
    "電話番号" => "090-1234-5678"
];

foreach ($form_data as $field => $value) {
    if (empty($value)) {
        echo $field . "が入力されていません\n";
    }
}
?>

商品リストの表示

説明 ネットショップで商品の一覧を表示する

コード例

<?php
$products = [
    ["商品名" => "Tシャツ", "価格" => 2000],
    ["商品名" => "ジーンズ", "価格" => 8000],
    ["商品名" => "スニーカー", "価格" => 12000]
];

foreach ($products as $product) {
    echo $product["商品名"] . ":" . $product["価格"] . "円\n";
}
?>

実行結果

Tシャツ:2000円
ジーンズ:8000円
スニーカー:12000円

よくある間違いと解決方法

変数名を間違える

❌ よくある間違い

foreach ($fruits as $fruit) {
    echo $fruits; // ←配列全体を指してしまう
}

✅ 正しい書き方

foreach ($fruits as $fruit) {
    echo $fruit; // ←一つずつの果物を指す
}

参照の使い方を間違える

❌ よくある間違い

foreach ($numbers as $num) {
    $num = $num * 2; // ←元の配列は変わらない
}

✅ 正しい書き方

foreach ($numbers as &$num) {
    $num = $num * 2; // ←元の配列が変わる
}

練習問題にチャレンジ

理解を深めるために、簡単な練習をしてみましょう。

問題1 次の配列から、合計点数を計算してください。

$scores = [80, 95, 72, 88, 91];

答え

$scores = [80, 95, 72, 88, 91];
$total = 0;

foreach ($scores as $score) {
    $total = $total + $score;
}

echo "合計点数:" . $total;
// 結果:合計点数:426

まとめ

foreach文を使えば、配列の処理がとても簡単になります。

ポイント:

  • 基本構文foreach ($配列 as $値) または foreach ($配列 as $キー => $値)
  • 使う場面:配列のすべてを順番に処理したいとき
  • 注意点:値を変更するときは&をつける

コメント

タイトルとURLをコピーしました