看起来PHP 7在处理usort函数中相等结果的方式上进行了未记录的更改。
$myArray = array(1, 2, 3);
usort($myArray, function($a, $b) { return 0; });
print_r($myArray);
// PHP 5:
Array
(
[0] => 3
[1] => 2
[2] => 1
)
// PHP 7
Array
(
[0] => 1
[1] => 2
[2] => 3
)
在 PHP 7 中,usort 函数会将相等的值添加到数组末尾,而 PHP 5 则将它们添加到开头。我没有找到任何关于这种行为的说明。
是否有一种方法可以强制使用 PHP 5 的行为?
usort
从来没有保证过是稳定的,也没有定义相等元素的排序顺序。如果你依赖于未定义的行为,你需要改变你的方法。 - deceze