【发布时间】:2015-03-21 09:59:22
【问题描述】:
PHP sort() 函数和该家族的其他函数返回 true 表示成功或 false 表示失败。在什么情况下排序函数返回false?什么是可能的失败原因?
示例:
$array = [1, 5, 22, 8, 3, 3];
$returnValue = sort($array);
var_dump($returnValue); // bool(true)
我无法想象$returnValue 可能是false的任何情况。
我也尝试过带有用户定义比较功能的排序变体,这可能会引入一些错误,但没有成功。
$array = [1, 5, 22, 8, 3, 3];
$returnValue = usort($array, function($a, $b) { return 'Hello World'; });
var_dump($returnValue); // bool(true)
其实你可以在比较函数中做任何你想做的事情,因为回调的返回值是内部的
转换为整数,你每次都会得到$returnValue === true。这也适用于用户定义的比较函数
没有返回值。 PHP 在这种情况下返回 null,它在内部被强制转换为整数:(int)null === 0
因此一切都是正确的。
【问题讨论】:
-
我不确定,因为我从未尝试过这个,但也许将一个不是数组的值传递给 sort() 会导致返回 false?