虽然这可能看起来很明显,但用户定义的数组排序函数 (uksort()、uasort()、usort()) *不会* 在数组中 *至少有两个值* 时被调用。
以下代码
<?php
function usortTest($a, $b) {
var_dump($a);
var_dump($b);
return -1;
}
$test = array('val1');
usort($test, "usortTest");
$test2 = array('val2', 'val3');
usort($test2, "usortTest");
?>
将输出
string(4) "val3"
string(4) "val2"
第一个数组不会被发送到函数。
请在任何情况下都不要在这些函数中放置任何修改值或应用非排序业务逻辑的逻辑,因为它们并不总是会执行。