稳定的uasort - 为什么订单被逆转?

时间:2016-02-04 14:59:12

标签: php arrays sorting

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

为什么阵列被有效颠倒?

1 个答案:

答案 0 :(得分:1)

uasort 是一种稳定的排序,也就是说,它不会维持相等值的顺序。

manual注释部分包含stable_uasort