对包含数字和字符串类型的键的数组进行排序

时间:2016-10-23 14:06:23

标签: php arrays sorting

我处境很奇怪。不知道为什么我得到这个结果。 我有一个阵列 $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 );如果我在这个数组上使用kso​​rt,结果是: 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之前。这在我的第一个排序结果中正确显示。如果我错了,请纠正我。

0 个答案:

没有答案