虽然这看起来很明显,但用户定义的数组排序函数(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"
第一个数组不会发送到函数中。
请在任何情况下都不要在这些函数中放置任何修改值或应用非排序业务逻辑的逻辑,因为它们并不总是会被执行。