数组中的键排序

时间:2012-03-26 09:28:13

标签: php arrays

我偶然发现了令我困惑的事情。在我之前,如果你保存一个数组并且它的键是整数,那么数组将自动排序 也就是说,如果我在密钥2之前添加密钥1,我会认为数组将按最小数字排序:

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

相反,它出现了这样:

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

操作:

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

这看起来似乎没什么,但有时候我会在数组中使用foreach()或存储id并指望它们为INSERT - 查询分类,然后它们需要按正确的顺序排列(由于自动增加)。

所以问题
什么是PHP的预期排序结果?

我有一个相当强大的内存,我之前通过输出#1整理了数组。这有不同于php-version到php-version?

感谢您的回答!

2 个答案:

答案 0 :(得分:5)

PHP数组实际上是一个有序的映射。它保持顺序,早期的元素将在之后的元素之前。

您可以使用ksort按键对数组进行排序。

答案 1 :(得分:1)

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

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