http://php.net/manual/en/function.usort.phpの下の例では、コールバック関数が呼び出されます。このコールバックの例(phpマニュアル)はどのように機能しますか?
function cmp($a, $b)
{
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
$x = array(3, 2, 5, 6, 1);
usort($x, "cmp");
foreach ($x as $key => $value) {
echo "$key: $value<br>";
}
私は特にusortに関心がありませんが、これは例です。私の質問は、cmp関数の$ aと$ b引数は何ですか? usortは配列$ xが与えられているので、cmpで何が起こっているのか分かりません(コードは単純ですが、引数は何か分かりません)。
私の想像力は、$ aと$ bの両方が何らかの方法で配列を繰り返し処理していることを示しています(ソートできる唯一の方法です)。誰かがこれについていくつかの光を当てることができますか?
ありがとうdrew010。私は今理解しています - しかし、私はあなたがこれをどのように理解したのか不思議です。マニュアルに含まれる関数の定義がわかりませんでした。 '比較関数は、または第1引数がそれぞれ第2引数よりも小さい、等しい、または大きいとみなされる場合はゼロより大きい値を返します。 ' – TenLeftFingers
比較関数は、PHP関数[strcmp()](http://php.net/strcmp)と同じ戻り値を使用します。これはCからも借用されているため、この関数の仕組みに精通していました。そこではあまり明確ではありませんが、strcmpを調べるともう少しクリアになるかもしれません。 – drew010