「配列の中身を順番に見ていきたいけど、どう書けばいいの?」
「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 $キー => $値)
- 使う場面:配列のすべてを順番に処理したいとき
- 注意点:値を変更するときは
&
をつける
コメント