関数の概要
PHPの uksort 関数は、配列のキーをユーザー定義の比較関数に基づいてソートします。通常のソート関数と異なり、自分で定義したルールに従ってキーの順序を決めたい場合に非常に便利です。配列のキーの並び替えが必要な場合に使うことで、柔軟なソートが実現できます。
パラメータの説明
- array:参照渡しされる配列。キーを並べ替え対象の配列を指定します。
- callback:比較用のコールバック関数。2つの配列キーを引数にとり、整数を返します。返す値が小さい順にキーが並びます。
戻り値
キーの並び替えが成功すれば true を返します。失敗した場合は false を返します。失敗の多くは、指定したコールバック関数が正しくない場合に発生します。
使用例
基本的な使い方
<?php
$array = ['c' => 3, 'a' => 1, 'b' => 2];
uksort($array, function($key1, $key2) {
return strcmp($key1, $key2);
});
print_r($array);
?>
この例では、キーをアルファベット順にソートしています。結果はキーが a, b, c の順となります。
キーの長さでソート
<?php
$array = ['apple' => 1, 'kiwi' => 2, 'banana' => 3];
uksort($array, function($key1, $key2) {
return strlen($key1) - strlen($key2);
});
print_r($array);
?>
キーの文字列長さでソートしています。キーの長さが短い順になるため、結果は kiwi, apple, banana となります。
逆順でのキーソート
<?php
$array = ['one' => 1, 'two' => 2, 'three' => 3];
uksort($array, function($key1, $key2) {
return strcmp($key2, $key1); // 逆順に比較
});
print_r($array);
?>
キーをアルファベットの逆順でソートしたい場合の例です。キーは two, three, one の順になります。
関連する関数
ksort(キーを昇順にソートする)krsort(キーを降順にソートする)uasort(ユーザー定義関数で配列の値をソート)usort(ユーザー定義関数で配列の値をインデックス付きでソート)
まとめ
uksort は配列のキーを自分のルールで並び替えたいときに使える強力な関数です。比較関数を自由に設定できるため、単純な昇順・降順だけでなく、文字の長さや特殊なルールを用いたソートも可能です。配列操作の幅を広げるために、ぜひ使い方を覚えておきましょう。
