概要

連想配列の真骨頂はここから。foreach ($arr as $k => $v) と書くと、キーが $k に、値が $v 1 ペアずつ入ってくる。['name' => '太郎', 'age' => 20] を走査すれば、1 回目は $k = 'name', $v = '太郎'、2 回目は $k = 'age', $v = 20、という具合だ。前章の as $v 形式と書き方はほぼ同じで、$k => を足すだけでキーも一緒に取れるようになる。

この形が活きるのは、キーと値をセットで扱う出力や加工 をしたい時。たとえば name: 太郎 のように「ラベル: 値」で表示する、特定の条件を満たす値のキーだけを抜き出す、新しい連想配列をループの中で組み立てる、といった処理だ。Web フォームの入力値を <label> 付きで表示したり、設定ファイルの内容をログに書き出したりする時に毎日使う形だと思っていい。

進んだ使い方として foreach ($arr as $k => &$v) のように 値を参照渡し にすると、ループ内で $v を書き換えれば元の配列も書き換わる。便利な反面 &$v がループ後も残って後続のバグを生むため、本章では深掘りせず通常の値渡しに限定する。3 つのドリルで「出力」「フィルタ」「変換」という典型 3 パターンに触れて、配列処理の引き出しを増やす。

学習目標

ドリル

no 内容
01 key: value 形式で全要素を出力
02 値が条件を満たすキーだけを出力
03 キーを大文字化した新しい連想配列を作る

演習: ドリル 01 — key と value を出力

問題

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

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

foreach でキーと値を取り出し、キー: 値 の形式で 1 行ずつ出力してください。区切りは半角コロンと半角スペース 1 個です。

期待される出力:

math: 80
english: 70
science: 90

ヒント

演習: ドリル 02 — 値が条件を満たすキー

問題

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

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

値が 80 以上 のキーを、挿入順で 1 行ずつ出力してください。

期待される出力:

math
science

ヒント

演習: ドリル 03 — キーを大文字化した新しい連想配列

問題

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

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

キーを すべて大文字に変換した新しい連想配列 を作り、キー: 値 の形式で 1 行ずつ出力してください。

期待される出力:

MATH: 80
ENGLISH: 70
SCIENCE: 90

ヒント

この章を AI に聞く

  1. 「ch04 — foreach でキーと値を取り出す」のつまずきやすいポイントを、初学者向けに3つ教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

  2. 「ch04 — foreach でキーと値を取り出す」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    💬 ChatGPT 📘 Claude ✨ Gemini

  3. 「ch04 — foreach でキーと値を取り出す」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

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

ch04 — foreach でキーと値を取り出す」を読み終えました。
学んだことを誰かに教えると、もっと記憶に残ります。

X で共有 Hatena LINE