我处境很奇怪。不知道为什么我得到这个结果。
我有一个阵列
$x = array(
1603 => 1976.8,
1602 => 1976.8,
1604 => 1976.8,
1605 => 1933.8,
1606 => 1667.6,
1610 => 6535.3333333333,
'1610-5' => 0.5,
1611 => 18814.5
);
如果我在这个数组上使用ksort,结果是:
Array
(
[1602] => 1976.8
[1603] => 1976.8
[1604] => 1976.8
[1605] => 1933.8
[1606] => 1667.6
[1610-5] => 0.5
[1610] => 6535.33333333
[1611] => 18814.5
)
但是如果我从这个数组中删除一些初始项目,例如
$x = array(
1604 => 1976.8,
1605 => 1933.8,
1606 => 1667.6,
1610 => 6535.3333333333,
'1610-5' => 0.5,
1611 => 18814.5
);
然后同一个数组的ksort结果是:
Array(
[1604] => 1976.8
[1605] => 1933.8
[1606] => 1667.6
[1610] => 6535.33333333
[1610-5] => 0.5
[1611] => 18814.5)
两者的区别在于:在第一个结果中,数组键值对('1610-5'=> 0.5)在之前(1610 => 6535.3333333333),但在下一个结果中对于相同的数组键值对:('1610-5'=> 0.5)在(1610 => 6535.3333333333)之后。同样的排序给了我不同的结果。为什么会这样?我希望密钥'1610-5'应始终位于密钥1610之前。这在我的第一个排序结果中正确显示。如果我错了,请纠正我。