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

PHPの`usort()`関数に関する次の記述のうち、正しいものはどれか。

`usort()`は、比較用のコールバック関数を自作して配列を並び替える。 正解
`usort()`は連想配列のキーの並びを保持したままソートする関数である。
`usort()`はコールバック関数を必要としない、単純な昇順ソート関数である。
`usort()`は文字列専用のソート関数である。
解説
`usort($array, $callback)`は、比較ロジックを自分で定義したコールバック関数(2つの要素を受け取り、負・0・正の整数を返す関数)に基づいて配列をソートする関数です。単純な昇順・降順だけでなく、独自の基準(オブジェクトの特定プロパティなど)でソートしたい場合に使います。 他の選択肢が誤りである理由は次の通りです。 ・`usort()`はソート後にキーを`0`から振り直す関数で、元のキー(連想配列のキーを含む)は保持されません。「キーの並びを保持したまま」というのは誤りです(キーを保持したい場合は`uasort()`を使います)。 ・`usort()`は比較ロジックをコールバック関数として渡す必要があり、必須の第2引数です。「コールバック関数を必要としない」は誤りです。 ・`usort()`は文字列専用ではなく、数値・オブジェクトなど任意の要素を、コールバックで定義した基準に従ってソートできます。 例: ``` $people = [['name' => 'Bob', 'age' => 30], ['name' => 'Alice', 'age' => 25]]; usort($people, fn($a, $b) => $a['age'] <=> $b['age']); print_r($people); // Alice(25), Bob(30) の順 ``` (参照: 独習PHP 第4版 第5章 組み込み関数 5.3.11節 usort関数 p.205〜206)