foreach でキーと値を取り出す
テクノロジ系 / array-assoc (連想配列・foreach・ソート)
foreach でキーと値を取り出す
Lesson 5 / Chapter 4
値だけでは「どのキーか」が分からない
<?php
$scores = [
'math' => 80,
'english' => 70,
'science' => 90,
];
foreach ($scores as $v) {
echo $v . "\n"; // 80 / 70 / 90
}- これだと「80 が何の科目か」分からない
- キーも一緒に取り出したい
as $k => $v でキーと値を同時に取る
<?php
$scores = [
'math' => 80,
'english' => 70,
'science' => 90,
];
foreach ($scores as $k => $v) {
echo $k . ': ' . $v . "\n";
}実行結果:
math: 80 english: 70 science: 90
$kにキー、$vに値が入る- 変数名は
$key / $valueなどでも OK
条件に合うキーだけ出力
<?php
$scores = [
'math' => 80,
'english' => 70,
'science' => 90,
];
foreach ($scores as $k => $v) {
if ($v >= 80) {
echo $k . "\n";
}
}実行結果:
math science
- 値で
if判定し、条件を満たすキーだけを出力 - 「合格者のリストを作る」典型パターン
ループの中で新しい連想配列を組み立てる
<?php
$scores = [
'math' => 80,
'english' => 70,
];
$upper = [];
foreach ($scores as $k => $v) {
$upper[strtoupper($k)] = $v;
}
print_r($upper);実行結果:
Array
(
[MATH] => 80
[ENGLISH] => 70
)- 元の配列はそのまま、別の連想配列を作る
- キーを変換したり、値を加工したりできる
このチャプターでできるようになること
✅ foreach ($arr as $k => $v) でキーと値を取り出せる
✅ "key: value" 形式で出力できる
✅ 値の条件でキーをフィルタできる
✅ キーを加工した新しい連想配列を作れる
→ ドリルへ
考えてみよう
既定では正解・不正解の判定はしません。自分のペースで「答えを見る」を。採点してほしい場合だけ「採点してほしい」を押してください。
ドリル 01 — key と value を出力
問題
以下の連想配列が与えられています。
$scores = [
'math' => 80,
'english' => 70,
'science' => 90,
];foreach でキーと値を取り出し、キー: 値 の形式で 1 行ずつ出力してください。区切りは半角コロンと半角スペース 1 個です。
期待される出力:
math: 80 english: 70 science: 90
採点
php scripts/grade.php topics/array-assoc/ch04-foreach-key-value/drill/01-print-kv/
ヒント
foreach ($scores as $k => $v) { echo $k . ': ' . $v . "\n"; }
ドリル 02 — 値が条件を満たすキー
問題
以下の連想配列が与えられています。
$scores = [
'math' => 80,
'english' => 70,
'science' => 90,
'history' => 60,
];値が 80 以上 のキーを、挿入順で 1 行ずつ出力してください。
期待される出力:
math science
採点
php scripts/grade.php topics/array-assoc/ch04-foreach-key-value/drill/02-find-by-value/
ヒント
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
採点
php scripts/grade.php topics/array-assoc/ch04-foreach-key-value/drill/03-rename-key/
ヒント
- 空の連想配列
$upper = [];を用意 foreach ($scores as $k => $v) { $upper[strtoupper($k)] = $v; }- 最後に
$upperを foreach して出力