在这种情况下,PHP排序函数返回FALSE?

在这种情况下,PHP排序函数返回FALSE?,php,sorting,Php,Sorting,PHP函数和该系列中的其他函数返回 成功时为true,失败时为false。在这种情况下,排序函数返回false?失败的可能原因是什么 示例: $array = [1, 5, 22, 8, 3, 3]; $returnValue = sort($array); var_dump($returnValue); // bool(true) 我无法想象在任何情况下,$returnValue都可能是false 我还尝试了使用用户定义的比较函数对变量进行排序,这可能会引入一些错误,但没有成功 $arr

PHP函数和该系列中的其他函数返回 成功时为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

因此,一切都是正确的。

如果参数1不是数组,它将返回false

我不确定,因为我从未尝试过这一点,但如果将值传递给sort(),而该值不是数组,则可能会返回false?答案很简单。我从来没有想过传递与数组不同的参数。