我有这段代码:
$ids = array(13952979,13952983,13952997,13952999,13953001,13953009,13953011,13953013);
uasort($ids, function($a, $b){
echo $a . ',' . $b . "<br>";
});
这最终回应:
13952999,13952983
13953013,13952999
13952999,13952997
13953011,13952999
13952999,13952979
13953009,13952999
13953001,13952999
13952997,13952979
13952983,13952997
13953013,13953001
13953009,13953013
13953011,13953013
13953009,13953011
请注意,组合13952979,13952983
- 或其反向 - 不是比较之一。这导致排序仅部分排序。
为什么不在13952979
和13952983
之间进行比较?我怎样才能使它执行所有可能的比较?
答案 0 :(得分:2)
没有必要执行所有可能的比较来排序数组。它执行了比较13952997,13952979
和13952983,13952997
。从中可以推断出13952979,13952983
的结果,因此不需要明确地进行。
答案 1 :(得分:0)
您没有排序,至少不是当前代码。在您的函数中没有进行比较,因此PHP
使用默认返回值,该值等于0(所有项目都相等),导致您注意到的行为不正确。
这应该表现得更好:
uasort($ids, function($a, $b){
echo $a . ',' . $b . "<br>";
return $a - $b; // or $b - $a, depending on the sort order you need
});