2012-03-26 111 views
0

我偶然发现了一些让我困惑的东西。在我之前,如果你保存一个数组并且它是整数的键,那么数组会自动对它自己排序。阵列中的键排序

Array 
(
    [1] => one 
    [2] => two 
) 

相反,它出现这样的:

Array 
(
    [2] => two 
    [1] => one 
) 

也就是说,如果我添加的关键 2,关键 1之前,我虽然该阵列将由最低数量排序

操作:

$arr = array(); 
$arr[2] = 'two'; 
$arr[1] = 'one'; 

这看起来好像没什么,但有时我用foreach()或STO在数组中指定它们并将它们排序为INSERT -query,然后它们需要按正确的顺序(由于AUTO INCREMENT)。

因此问题
在PHP中预期的排序结果是什么?

我有一个相当强大的内存,我已经通过输出#1排序了数组。这是否有所不同从PHP版本到PHP版本?

感谢您的回答!

+0

你是如何得到这个数组的?即您使用了哪种阵列操作? – 2012-03-26 09:29:27

+0

数组中的AFAIK项目按照将它们添加到数组中的顺序排列。您可以使用一些内置PHP函数按键对数组进行排序。 – 2012-03-26 09:29:59

+0

'$ arr [2] ='blabla''只会将元素推到数组的末尾,因此,请使用'ksort'重新排序 – Val 2012-03-26 09:38:00

回答

5

PHP数组实际上是一个有序的映射。它保持顺序,早期的元素将在后面的元素之前。您可以使用ksort按键排序数组。

+0

感谢您的回答。我想我的记忆让我失望了,这是在以前的项目中自动排序的。 – 2012-03-26 09:46:30

1

This article解释说,PHP数组实际上是有序的哈希映射,其中的键以它们生成的顺序存储。

如果您想要更传统的阵列行为,请尝试SPLFixedArray类。