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

キーでソート

テクノロジ系 / 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
)
  • キーが辞書順 (englishmathscience)
  • 値はキーにくっついて動く

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"; }