今天遇到了一个小问题,
用arsort排序后发现如果值相等的话,顺序会变得莫名其妙
用几个小例子做了实验 结果如下
所以我估计,实现的时候arsort是用另外一个新数组接受原数组中最小的push进去,然后元数组一个个减少,最后全转移到新数组时就是已经排好序的,在此列中所有值相等,则第一个元素在结果数组里的最后一个。。。依此类推...结果就和原数组相反。
有时间了去看看源码就知道了
用arsort排序后发现如果值相等的话,顺序会变得莫名其妙
用几个小例子做了实验 结果如下
<?php
$a=array('v' =>0 ,'c' => 0 ,'t' => 0 , 'p' => 0);
print_r(arsort($a));
print_r($a);
?>
^Z
1Array
(
[p] => 0
[t] => 0
[c] => 0
[v] => 0
)
所以我估计,实现的时候arsort是用另外一个新数组接受原数组中最小的push进去,然后元数组一个个减少,最后全转移到新数组时就是已经排好序的,在此列中所有值相等,则第一个元素在结果数组里的最后一个。。。依此类推...结果就和原数组相反。
有时间了去看看源码就知道了