概要
連想配列の真骨頂はここから。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 パターンに触れて、配列処理の引き出しを増やす。
学習目標
foreach ($arr as $k => $v)でキーと値の両方を取り出せる- 「キーと値を組み合わせた文字列」を出力できる
- ループの中で別の新しい連想配列を組み立てられる
ドリル
| 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ヒント
foreach ($scores as $k => $v) { echo $k . ': ' . $v . "\n"; }
📝 演習: ドリル 02 — 値が条件を満たすキー
問題
以下の連想配列が与えられています。
$scores = [
'math' => 80,
'english' => 70,
'science' => 90,
'history' => 60,
];値が 80 以上 のキーを、挿入順で 1 行ずつ出力してください。
期待される出力:
math
scienceヒント
foreach ($scores as $k => $v)で回すif ($v >= 80) { echo $k . "\n"; }
📝 演習: ドリル 03 — キーを大文字化した新しい連想配列
問題
以下の連想配列が与えられています。
$scores = [
'math' => 80,
'english' => 70,
'science' => 90,
];キーを すべて大文字に変換した新しい連想配列 を作り、キー: 値 の形式で 1 行ずつ出力してください。
期待される出力:
MATH: 80
ENGLISH: 70
SCIENCE: 90ヒント
- 空の連想配列
$upper = [];を用意 foreach ($scores as $k => $v) { $upper[strtoupper($k)] = $v; }- 最後に
$upperを foreach して出力