キーでソート
テクノロジ系 / array-assoc (連想配列・foreach・ソート)
キーでソート
Lesson 5 / Chapter 7
値ではなく キー で並べたいとき
<?php
$scores = [
'math' => 80,
'english' => 70,
'science' => 90,
];asortは値の昇順 (ch06)- 「キー名を辞書順に揃えて出したい」場合は別の関数が必要
- →
ksortを使う
ksort($arr) でキーの昇順
<?php
$scores = [
'math' => 80,
'english' => 70,
'science' => 90,
];
ksort($scores);
print_r($scores);実行結果:
Array
(
[english] => 70
[math] => 80
[science] => 90
)- キーが辞書順 (
english→math→science) - 値はキーにくっついて動く
krsort($arr) でキーの降順
<?php
$scores = [
'math' => 80,
'english' => 70,
'science' => 90,
];
krsort($scores);
print_r($scores);実行結果:
Array
(
[science] => 90
[math] => 80
[english] => 70
)kは key、rは reverse の意味- 「逆順に並べたい」時に便利
まとめ: ソート関数の使い分け
| 関数 | 並び替え対象 | キー |
|---|---|---|
sort | 値 (昇順) | 0,1,2 に振り直し |
asort | 値 (昇順) | 残る |
ksort | キー (昇順) | 残る |
krsort | キー (降順) | 残る |
- 連想配列で「キーを残したい」なら
asort / ksort / krsortを選ぶ - どれも 元の配列を直接書き換える
このチャプターでできるようになること
✅ ksort($arr) でキー昇順に並べられる
✅ krsort($arr) でキー降順に並べられる
✅ asort (値) と ksort (キー) の役割を区別できる
✅ ソート関数の一覧を頭に入れる
→ ドリルへ
考えてみよう
既定では正解・不正解の判定はしません。自分のペースで「答えを見る」を。採点してほしい場合だけ「採点してほしい」を押してください。
ドリル 01 — ksort でキー昇順
問題
以下の連想配列が与えられています。
$scores = [
'math' => 80,
'english' => 70,
'science' => 90,
'history' => 60,
];ksort で キーの昇順 に並べ替え、キー => 値 形式で 1 行ずつ出力してください。
期待される出力:
english => 70 history => 60 math => 80 science => 90
採点
php scripts/grade.php topics/array-assoc/ch07-sort-key/drill/01-ksort-asc/
ヒント
ksort($scores);foreach ($scores as $k => $v) { echo $k . ' => ' . $v . "\n"; }
ドリル 02 — krsort でキー降順
問題
以下の連想配列が与えられています。
$scores = [
'math' => 80,
'english' => 70,
'science' => 90,
'history' => 60,
];krsort で キーの降順 に並べ替え、キー => 値 形式で 1 行ずつ出力してください。
期待される出力:
science => 90 math => 80 history => 60 english => 70
採点
php scripts/grade.php topics/array-assoc/ch07-sort-key/drill/02-krsort/
ヒント
krsort($scores);foreach ($scores as $k => $v) { echo $k . ' => ' . $v . "\n"; }