(PHP 3>= 3.0.3, PHP 4 >= 4.0.0)
usort --
ユーザー定義の比較関数により値で配列をソートします
説明
void usort
(array array, function cmp_function)
この関数は、ユーザー定義の比較関数により配列をその値でソートします。
ソートしたい配列を複雑な基準でソートする必要がある場合、
この関数を使用するべきです。
比較関数は、最初の引数が二番目の引数より小さいか等しいか大きい場合に
それぞれゼロ未満、ゼロに等しい、ゼロより大きい整数を返します。二つの
メンバーの?較結果が等しいとなった場合、ソートされた配列の順番は定義
されません。
例 1usort()の例
function cmp ($a, $b) {
if ($a == $b) return 0;
return ($a > $b) ? -1 : 1;
}
$a = array (3, 2, 5, 6, 1);
usort ($a, "cmp");
while (list ($key, $value) = each ($a)) {
echo "$key: $value\n";
}
|
|
この例は以下を表示します:
注意
もちろん、このような簡単な例ではrsort()関数
の方がよォiしfいます。
例 2多次元配列を使用するusort()の例
function cmp ($a, $b) {
return strcmp($a["fruit"],$b["fruit"]);
}
$fruits[0]["fruit"] = "lemons";
$fruits[1]["fruit"] = "apples";
$fruits[2]["fruit"] = "grapes";
usort($fruits, "cmp");
while (list ($key, $value) = each ($fruits)) {
echo "\$fruits[$key]: " . $value["fruit"] . "\n";
}
|
|
多次元配列をソートする際には、$a と $b は配列の最初のインデックス
への参照を保持していまY。
この例の出力は以下となります。
警告 |
(Solarisシステムのような)いくつかのCライブラリに含まれる
quicksort関数は、比較関数が適当な値を返さない場合にPHPをクラッ
シュさせる可能性があります。
|
uasort(), uksort(),
sort(), asort(),
arsort(), ksort(),
rsort(), natsort()
も参照下さい。