uksort

(PHP 4, PHP 5, PHP 7, PHP 8)

uksortユーザー定義の比較関数を用いて、キーで配列をソートする

説明

uksort(array&$array, callable$callback): true

順序を決めるユーザー定義の比較関数を用いて、 array のキーをソートします。

注意:

比較結果が等しくなる二つの要素があった場合、それらの並び順は保持されます。PHP 8.0.0 より前のバージョンでは、ソートした配列におけるそれらの並び順は不定でした。

注意:

この関数をコールすると、配列の内部ポインタは最初の要素にリセットされます。

パラメータ

array

入力の配列。

callback

比較関数は、最初の引数と二番目の引数の比較結果を返します。最初の引数のほうが二番目の引数より大きい場合は正の整数を、二番目の引数と等しい場合はゼロを、そして二番目の引数より小さい場合は負の整数を返す必要があります。

callback(mixed$a, mixed$b): int
警告

float のような 非整数 を比較関数が返すと、その返り値を内部的に int にキャストして使います。 つまり、0.990.1 といった値は整数値 0 にキャストされ、 値が等しいとみなされます。

戻り値

常に true を返します。

変更履歴

バージョン説明
8.2.0 戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
8.0.0callback がリファレンス渡しされる引数を期待している場合、 この関数は E_WARNING を発生させるようになりました。

例1 uksort() の例

<?php
function cmp($a, $b)
{
$a = preg_replace('@^(a|an|the) @', '', $a);
$b = preg_replace('@^(a|an|the) @', '', $b);
return
strcasecmp($a, $b);
}

$a = array("John" => 1, "the Earth" => 2, "an apple" => 3, "a banana" => 4);

uksort($a, "cmp");

foreach (
$a as $key => $value) {
echo
"$key: $value\n";
}
?>

上の例の出力は以下となります。

an apple: 3 a banana: 4 the Earth: 2 John: 1

参考

  • usort() - ユーザー定義の比較関数を使用して、配列を値でソートする
  • uasort() - ユーザー定義の比較関数で配列をソートし、連想インデックスを保持する
  • 配列ソート関数の比較
To Top