概要

配列の中身を 1 つずつ取り出して処理する時に使うのが foreach。書き方は foreach ($arr as $v) { ... } で、$arr の各要素が順番に $v に入ってブロックの中で使える。for 文と違って インデックス変数 $i を自分で管理しなくていい ので、ループの書きまちがいが起きにくい。

foreach ($arr as $v) の形は 値だけ を取り出すバリエーション。連想配列に対して使うと、キーは無視されて値だけが順番に $v に入る。たとえば商品ごとの金額が入った連想配列で「合計いくら?」を計算したい時のように、キーの中身は気にせず値で集計する ような場面で使い勝手がいい。次の章で扱う as $k => $v 形式は必要な時だけ使えばよく、まずはこのシンプルな形を体に入れる。

注意点として、PHP の foreach は内部で 配列のコピー (またはイテレータ) を作って 走査している。そのためループ中に元の配列を unset したり追加したりしても安全に最後まで回るが、配列が大きいとメモリを余分に使う。ドリル 02 と 03 では合計・連結という代表的な集計パターンを通して、foreach で「畳み込む」発想を身につける。

学習目標

ドリル

no 内容
01 foreach で全要素を 1 行ずつ出力
02 整数の連想配列を foreach で合計
03 文字列の連想配列を foreach で連結

演習: ドリル 01 — foreach で全要素を出力

問題

以下の連想配列が与えられています。

$scores = [
    'math'    => 80,
    'english' => 70,
    'science' => 90,
];

foreach で値だけを取り出し、上から順に 1 行ずつ出力してください。

期待される出力:

80
70
90

ヒント

演習: ドリル 02 — foreach で合計

問題

以下の連想配列が与えられています。

$scores = [
    'math'    => 80,
    'english' => 70,
    'science' => 90,
];

foreach で全ての値を合計し、その合計を 1 行で出力してください。

期待される出力:

240

ヒント

演習: ドリル 03 — foreach で文字列連結

問題

以下の連想配列が与えられています。

$labels = [
    'morning' => 'おはよう',
    'noon'    => 'こんにちは',
    'night'   => 'こんばんは',
];

foreach で全ての値を取り出し、半角スペース 1 個区切りで連結して 1 行で出力してください。 末尾に余分なスペースは入れないでください。

期待される出力:

おはよう こんにちは こんばんは

ヒント

この章を AI に聞く

  1. 「ch03 — foreach で値だけを走査」のつまずきやすいポイントを、初学者向けに3つ教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

  2. 「ch03 — foreach で値だけを走査」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    💬 ChatGPT 📘 Claude ✨ Gemini

  3. 「ch03 — foreach で値だけを走査」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

🎉 受講お疲れさまでした!

ch03 — foreach で値だけを走査」を読み終えました。
学んだことを誰かに教えると、もっと記憶に残ります。

X で共有 Hatena LINE