第5章 組み込み関数 / 第1回 模擬試験

配列のソートに関する次の記述のうち正しいものはどれか。

`sort()`関数は配列をキーで降順にソートする。
`sort()`関数はソートの時に配列のキーをリセットするため、連想配列にだけ使用すべきである。
`asort()`関数は配列を要素の値で昇順にソートする。この関数は連想配列のキーと値を保持する。 正解
`ksort()`関数は配列をキーで昇順にソートする。この関数はキーと値のペアを保持しない。
解説
`asort()`は配列の値を基準に昇順にソートしますが、`sort()`と異なりキーと値の対応関係(連想配列であればキー、添字配列であれば元のインデックス)をそのまま保持します。 他の選択肢が誤りである理由は次の通りです。 ・`sort()`は値の「昇順」でソートする関数です(降順は`rsort()`)。またソート後にキーを0から振り直すため、キーに意味を持たせたい連想配列には不向きです(選択肢の説明とは逆で、連想配列には使うべきではありません)。 ・`ksort()`はキーを基準に昇順ソートする関数で、`asort()`と同様にキーと値の対応関係を保持します(「保持しない」は誤りです)。 例: ``` $scores = ['bob' => 80, 'alice' => 95, 'eve' => 70]; asort($scores); print_r($scores); // ['eve'=>70, 'bob'=>80, 'alice'=>95](キーを保持したまま値の昇順) ``` 用途に応じて`sort()`/`rsort()`(添字振り直し)、`asort()`/`arsort()`(値でソートしキー保持)、`ksort()`/`krsort()`(キーでソート)を使い分けます。 (参照: 独習PHP 第4版 第5章 組み込み関数 5.3.10節 sort関数 p.203)