我正在使用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

08-27 22:25