ch07 8章中 7章目

ch07 — キーでソート

スライドで見る

この章を AI と学ぶ

💬 AI に聞く質問例 3 件
  1. 「ch07 — キーでソート」のつまずきやすいポイントを、初学者向けに3つ教えてください

    ChatGPT Claude Gemini

  2. 「ch07 — キーでソート」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    ChatGPT Claude Gemini

  3. 「ch07 — キーでソート」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    ChatGPT Claude Gemini

概要

前章は で並べ替える asort を扱った。この章はもう 1 つの軸、キーで並べ替える 関数 ksortkrsort を学ぶ。ksort($arr) はキーの昇順 (アルファベット順・数字なら小さい順)、krsort($arr) は降順 (逆順)、と覚え方はシンプル。k がキー (key)、r が reverse (逆順) を表している。

使い所は 連想配列を出力する時にキーを揃えたい 場面。たとえば設定項目を config.json 風にダンプする時、キーをアルファベット順に並べておくと差分が読みやすくなる。あるいは「日付をキーにした集計結果」を時系列で並べたい時にも ksort が効く。プログラム内部のロジックではなく、人が見るための出力整形 に多く使われる関数だ。

注意点は前章と同じく 破壊的 な点。元の配列が書き換わるので、ソート前の順序が必要なら別変数にコピーしてから呼ぶ。また ksort は文字列キーと数値キーが混在する配列でも動くが、比較ルールが直感と違うことがあるため、本章では キーがすべて文字列 または すべて数値 の素直な連想配列だけを扱う。ドリル 01・02 で昇順・降順の両方を出力して、asort (値で並べる) との使い分けを身につける。

学習目標

  • ksort($arr) で連想配列をキーの昇順に並べ替えできる
  • krsort($arr) で連想配列をキーの降順に並べ替えできる
  • 値で並べる asort と用途を区別できる

ドリル

no 内容
01 ksort で連想配列をキー昇順に出力
02 krsort で連想配列をキー降順に出力

解説スライド 全 6 枚

右の ボタン キー(またはスワイプ)で次のスライドに進めます。 下の「縦表示」を開くと全スライドを一気に読めます。

  1. キーでソート

    Lesson 5 / Chapter 7

  2. 値ではなく キー で並べたいとき

    <?php
    $scores = [
        'math'    => 80,
        'english' => 70,
        'science' => 90,
    ];
    • asort は値の昇順 (ch06)
    • 「キー名を辞書順に揃えて出したい」場合は別の関数が必要
    • ksort を使う
  3. ksort($arr) でキーの昇順

    <?php
    $scores = [
        'math'    => 80,
        'english' => 70,
        'science' => 90,
    ];
    
    ksort($scores);
    print_r($scores);

    実行結果:

    Array
    (
        [english] => 70
        [math] => 80
        [science] => 90
    )
    • キーが辞書順 (englishmathscience)
    • 値はキーにくっついて動く
  4. 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 の意味
    • 「逆順に並べたい」時に便利
  5. まとめ: ソート関数の使い分け

    関数 並び替え対象 キー
    sort 値 (昇順) 0,1,2 に振り直し
    asort 値 (昇順) 残る
    ksort キー (昇順) 残る
    krsort キー (降順) 残る
    • 連想配列で「キーを残したい」なら asort / ksort / krsort を選ぶ
    • どれも 元の配列を直接書き換える
  6. このチャプターでできるようになること

    ksort($arr) でキー昇順に並べられる ✅ krsort($arr) でキー降順に並べられる ✅ asort (値) と ksort (キー) の役割を区別できる ✅ ソート関数の一覧を頭に入れる

    → ドリルへ

1 / 6
📜 スライドを全部一気に読む(縦表示)

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 (キー) の役割を区別できる ✅ ソート関数の一覧を頭に入れる

→ ドリルへ

この章で取り組む 演習問題の流れ (2ステップ)
  1. 01 ドリル 01 — ksort でキー昇順 README.md starter.php answer.php
  2. 02 ドリル 02 — krsort でキー降順 README.md starter.php answer.php

演習問題の詳細

この章の演習問題の内容を読めます。実際に手元で解くには教材リポジトリを clone してください。

ドリル 01 — ksort でキー昇順

問題

以下の連想配列が与えられています。

$scores = [
    'math'    => 80,
    'english' => 70,
    'science' => 90,
    'history' => 60,
];

ksortキーの昇順 に並べ替え、キー => 値 形式で 1 行ずつ出力してください。

期待される出力:

english => 70
history => 60
math => 80
science => 90

ヒント

  • ksort($scores);
  • foreach ($scores as $k => $v) { echo $k . ' => ' . $v . "\n"; }

🧪 ブラウザで試す

スライドのコードを写経して ▶ 実行、自分で書いて 📝 採点 で答え合わせ。初回のみ PHP ランタイム読込で数秒かかります。

PHP ランタイム未読込

          

        

ドリル 02 — krsort でキー降順

問題

以下の連想配列が与えられています。

$scores = [
    'math'    => 80,
    'english' => 70,
    'science' => 90,
    'history' => 60,
];

krsortキーの降順 に並べ替え、キー => 値 形式で 1 行ずつ出力してください。

期待される出力:

science => 90
math => 80
history => 60
english => 70

ヒント

  • krsort($scores);
  • foreach ($scores as $k => $v) { echo $k . ' => ' . $v . "\n"; }

🧪 ブラウザで試す

スライドのコードを写経して ▶ 実行、自分で書いて 📝 採点 で答え合わせ。初回のみ PHP ランタイム読込で数秒かかります。

PHP ランタイム未読込

          

        

演習問題(2問)

  1. ドリル 01 — ksort でキー昇順

    README.md starter.php answer.php

  2. ドリル 02 — krsort でキー降順

    README.md starter.php answer.php

サイト内で問題文・雛形・解答例を確認できます。実際に手元で解くには教材リポジトリを clone してください。

完了にすると進捗に反映されます