採点されません。匿名です。 間違えることは学習の一部です。読むだけでもかまいません。

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 して出力