usort

関数の概要

PHPの usort 関数は、ユーザーが定義した比較関数を使って配列をソートするための関数です。標準のソート関数では対応できない複雑な基準で配列を並び替えたい場合に非常に便利です。配列の中身を直接書き換えてソートを行います。

パラメータの説明

  • array:ソート対象の配列。参照渡しで渡され、関数の実行後にソート済みの配列に書き変わります。
  • callback:比較関数。2つの配列要素を引数に取り、どちらが大きいか、または小さいかを返す関数を指定します。返り値は整数で、
    • 0未満:第1引数が第2引数より小さい
    • 0:等しい
    • 0より大きい:第1引数が第2引数より大きい

戻り値

usort はソートが成功した場合に true、失敗した場合に false を返します。なお、配列自体は参照渡しで渡されているため、戻り値に関わらず配列が書き換えられることに注意してください。

使用例

基本的な使い方:数値の昇順ソート

<?php
$array = [3, 1, 4, 1, 5, 9];

usort($array, function($a, $b) {
    return $a - $b;
});

print_r($array);
?>

簡単な比較関数で小さい順にソートしています。実行結果は [1, 1, 3, 4, 5, 9] となります。

連想配列を値の特定キーでソート

<?php
$data = [
    ['name' => '田中', 'age' => 28],
    ['name' => '佐藤', 'age' => 22],
    ['name' => '鈴木', 'age' => 35],
];

usort($data, function($a, $b) {
    return $a['age'] - $b['age'];
});

print_r($data);
?>

連想配列の age キーを基準に昇順でソートしています。年齢の若い順に並び替えたいときに使います。

文字列の長さでソート

<?php
$fruits = ['banana', 'apple', 'cherry', 'date'];

usort($fruits, function($a, $b) {
    return strlen($a) - strlen($b);
});

print_r($fruits);
?>

文字列の長さを比較して、短いものから長いものへとソートする例です。文字列のカスタム順序を作りたい場合に有効です。

関連する関数

  • sort:標準的な昇順ソート
  • asort:キーを維持したまま値でソート
  • ksort:キーでソート
  • uasortusortと似ているがキーを維持する

まとめ

usort はユーザー定義関数を利用して複雑なソート条件を実装できる強力な関数です。配列の値そのものを並び替えたい場合に利用し、連想配列の特定の要素を基準にしたり、文字列やオブジェクトのプロパティで自由に順序を決めることが可能です。ソートの基準を柔軟にカスタマイズしたい場合は、ぜひ活用してください。