我正在使用uasort对如下所示的数组进行排序:
Array
(
[2] => 0
[3] => 0
[4] => 0
)
我试图按值排序,保持键关联。此外,如果值相同,我需要保持原始顺序。
所以我要做的是:
uasort($arr, array($this, 'mysort'));
function mysort($a, $b){
if($a == $b){
return 0;
}
return ($a < $b) ? -1:1;
}
但是,这将给出结果数组:
Array
(
[4] => 0
[3] => 0
[2] => 0
)
为什么数组被有效地反转?
最佳答案
uasort
不是一个稳定的排序,也就是说,它不保持相等值的顺序。
manual的notes部分包含一个stable_uasort
。