uksort

関数の概要

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 は配列のキーを自分のルールで並び替えたいときに使える強力な関数です。比較関数を自由に設定できるため、単純な昇順・降順だけでなく、文字の長さや特殊なルールを用いたソートも可能です。配列操作の幅を広げるために、ぜひ使い方を覚えておきましょう。