array_keys / array_values
テクノロジ系 / array-assoc (連想配列・foreach・ソート)
array_keys / array_values
Lesson 5 / Chapter 5
「キーだけ」「値だけ」が欲しい場面がある
<?php
$scores = [
'math' => 80,
'english' => 70,
'science' => 90,
];- 「科目名の一覧だけ欲しい」 → キーが欲しい
- 「点数の一覧だけ欲しい」 → 値が欲しい
foreach で取り出してもよいが、専用関数がある。
array_keys($arr) でキーの配列
<?php
$scores = [
'math' => 80,
'english' => 70,
'science' => 90,
];
$keys = array_keys($scores);
print_r($keys);実行結果:
Array
(
[0] => math
[1] => english
[2] => science
)- 戻り値は 添字配列 (
0, 1, 2がキー) - 元の挿入順を保つ
array_values($arr) で値の配列
<?php
$scores = [
'math' => 80,
'english' => 70,
'science' => 90,
];
$values = array_values($scores);
print_r($values);実行結果:
Array
(
[0] => 80
[1] => 70
[2] => 90
)- これも添字配列で返ってくる
- 値だけ集めて
array_sumで合計、なども書きやすい
取り出した配列を foreach する
<?php
$scores = [
'math' => 80,
'english' => 70,
'science' => 90,
];
foreach (array_keys($scores) as $key) {
echo $key . "\n";
}実行結果:
math english science
foreach (array_keys(...) as $key)は「キー一覧で回す」典型パターン- 添字配列を返すので、
$nums[0]のように添字でもアクセスできる
このチャプターでできるようになること
✅ array_keys($arr) でキー一覧の添字配列を取得できる
✅ array_values($arr) で値一覧の添字配列を取得できる
✅ 取り出した配列を foreach できる
✅ count で要素数を測れる
→ ドリルへ
考えてみよう
既定では正解・不正解の判定はしません。自分のペースで「答えを見る」を。採点してほしい場合だけ「採点してほしい」を押してください。
ドリル 01 — array_keys でキー一覧
問題
以下の連想配列が与えられています。
$scores = [
'math' => 80,
'english' => 70,
'science' => 90,
];array_keys を使ってキー一覧を取り出し、上から順に 1 行ずつ出力してください。
期待される出力:
math english science
採点
php scripts/grade.php topics/array-assoc/ch05-array-keys-values/drill/01-list-keys/
ヒント
$keys = array_keys($scores);foreach ($keys as $k) { echo $k . "\n"; }
ドリル 02 — array_values で値一覧
問題
以下の連想配列が与えられています。
$scores = [
'math' => 80,
'english' => 70,
'science' => 90,
];array_values を使って値一覧を取り出し、上から順に 1 行ずつ出力してください。
期待される出力:
80 70 90
採点
php scripts/grade.php topics/array-assoc/ch05-array-keys-values/drill/02-list-values/
ヒント
$values = array_values($scores);foreach ($values as $v) { echo $v . "\n"; }
ドリル 03 — 特定の文字を含むキーを数える
問題
以下の連想配列が与えられています。
$items = [
'apple' => 100,
'banana' => 200,
'grape' => 150,
'peach' => 300,
];キーに 文字 a を含む ものが何個あるかを数え、その数を 1 行で出力してください。
期待される出力:
4
採点
php scripts/grade.php topics/array-assoc/ch05-array-keys-values/drill/03-key-count/
ヒント
$keys = array_keys($items);str_contains($key, 'a')で含むか判定- カウンタ変数
$count = 0;を増やす