概要

配列を 小さい順 (昇順) に並べ替える のに使うのが sortasort の 2 つ。どちらも「値で並べる」のは同じだが、キーを残すかどうか が大きく違う。sort($arr) は添字配列向けで、並べ替えた後にキーが 0, 1, 2... と振り直される。一方 asort($arr) は連想配列向けで、元のキーをそのまま保ったまま 値の順で並べ直す。

たとえば ['banana' => 3, 'apple' => 1, 'cherry' => 2]asort をかけると ['apple' => 1, 'cherry' => 2, 'banana' => 3] になる。キーと値のペアが崩れずに値の順番だけが変わるので、「金額順に商品名を表示する」「スコア順に名前を出す」といったランキング出力の定番関数になっている。sort を連想配列に使うとキーが消えてしまうため、連想配列なら基本 asort だと覚えておくと安全だ。

PHP のソート関数のもう 1 つの特徴は 破壊的 であること。返り値は成功した時の true であって、並べ替え後の新しい配列ではない。元の $arr 自体が書き換わるので、元の順序を残したい時は $copy = $arr でコピーしてから渡す。この章ではドリル 01・02 で sort の基本、03 で asort の挙動を比べて、「キーが消えるか残るか」の差を体感する。

学習目標

ドリル

no 内容
01 整数の添字配列を sort で昇順出力
02 文字列の添字配列を sort で昇順出力
03 連想配列を asort で値の昇順に並べ、キーと値を出力

演習: ドリル 01 — 整数を昇順ソート

問題

以下の整数の添字配列が与えられています。

$nums = [3, 1, 4, 1, 5, 9, 2, 6];

sort で昇順に並べ替え、上から順に 1 行ずつ出力してください。

期待される出力:

1
1
2
3
4
5
6
9

ヒント

演習: ドリル 02 — 文字列を辞書順ソート

問題

以下の文字列の添字配列が与えられています。

$names = ['banana', 'apple', 'cherry', 'date'];

sort で辞書順 (ABC 順) に並べ替え、上から順に 1 行ずつ出力してください。

期待される出力:

apple
banana
cherry
date

ヒント

演習: ドリル 03 — asort で連想配列を値の昇順

問題

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

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

asort値の昇順 に並べ替え、キー => 値 形式で 1 行ずつ出力してください。区切りは半角スペース + => + 半角スペースです。

期待される出力:

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

ヒント

この章を AI に聞く

  1. 「ch06 — 値で昇順ソート」のつまずきやすいポイントを、初学者向けに3つ教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

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

    💬 ChatGPT 📘 Claude ✨ Gemini

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

    💬 ChatGPT 📘 Claude ✨ Gemini

🎉 受講お疲れさまでした!

ch06 — 値で昇順ソート」を読み終えました。
学んだことを誰かに教えると、もっと記憶に残ります。

X で共有 Hatena LINE