概要
連想配列を扱っていると、「キーだけ全部欲しい」「値だけ並べたい」という場面がよく出てくる。たとえば設定ファイルに含まれる項目名を列挙したい時はキー、合計を集計したい時は値だけが必要、というように 片方だけを取り出して使いたい ケースだ。これを 1 行で実現する関数が array_keys と array_values。
array_keys($arr) は連想配列のキーを集めて 添字配列 として返し、array_values($arr) は値を同じく添字配列として返す。返り値が「キー 0, 1, 2... の素直な添字配列」になるのがポイントで、ここから count() で要素数を数えたり、foreach で順に処理したり、implode() で連結したりと、添字配列向けの関数群がすべて使えるようになる。array_values は「連想配列の構造を捨ててリストに変換する」用途でも頻出する。
逆方向の操作には array_combine($keys, $values) がある。array_keys と array_values で分解した配列を、後で別の組み合わせに再合成したい時の関数だ。この章ではまず分解側の 2 関数に集中して、ドリル 03 の「キーに特定の文字列を含むものを数える」で array_keys の典型的な使い方 (条件フィルタの前段) を体験する。
学習目標
array_keys($arr)でキーだけの添字配列を取り出せるarray_values($arr)で値だけの添字配列を取り出せる- 取り出した配列を foreach や count と組み合わせて使える
ドリル
| no | 内容 |
|---|---|
| 01 | array_keys で全キーを 1 行ずつ出力 |
| 02 | array_values で全値を 1 行ずつ出力 |
| 03 | キーに特定の文字列を含むキーの数を数える |
📝 演習: ドリル 01 — array_keys でキー一覧
問題
以下の連想配列が与えられています。
$scores = [
'math' => 80,
'english' => 70,
'science' => 90,
];array_keys を使ってキー一覧を取り出し、上から順に 1 行ずつ出力してください。
期待される出力:
math
english
scienceヒント
$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ヒント
$values = array_values($scores);foreach ($values as $v) { echo $v . "\n"; }
📝 演習: ドリル 03 — 特定の文字を含むキーを数える
問題
以下の連想配列が与えられています。
$items = [
'apple' => 100,
'banana' => 200,
'grape' => 150,
'peach' => 300,
];キーに 文字 a を含む ものが何個あるかを数え、その数を 1 行で出力してください。
期待される出力:
4ヒント
$keys = array_keys($items);str_contains($key, 'a')で含むか判定- カウンタ変数
$count = 0;を増やす