PHP联合数组是否被sorting?

我来自python背景和类似的(一个字典)python数据types是一个无序的键值对。

我想知道如果PHP关联数组是无序的? 他们似乎被责令。

$test = array( 'test' => 'test', 'bar' => 'bar', ); var_dump($test); var_dump(array_slice($test, 0, 1)); 

testing总是在酒吧之前,我可以切片这个数组,如你所见。 那么这是否总是保证在PHP版本中定购? 订单只是我已经声明的数组的顺序? 所以有些东西在内部指向“testing”,将数组放在[0]中? 我已经阅读了http://php.net/manual/en/language.types.array.php,但是在这个问题上并没有太多的提示。 我感谢你的回应。 泰

PHP关联数组(以及数组数组) 是有序的 ,PHP提供了各种函数来处理像uksort()krsort()krsort()

此外,PHP允许你用数字键不按顺序声明数组:

 $a = array(3 => 'three', 1 => 'one', 2 => 'two'); print_r($a); Array ( [3] => three [1] => one [2] => two ) // Sort into numeric order ksort($a); print_r($a); Array ( [1] => one [2] => two [3] => three ) 

从文档:

PHP中的数组实际上是一个有序的映射 。 地图是将值与键关联的types。 这种types针对不同的用途进行了优化; 它可以被视为一个数组,列表(向量),散列表(一个地图的实现),字典,收集,堆栈,队列,可能更多。 由于数组值可以是其他数组,所以树和multidimensional array也是可能的。

该文件指出:

 An array in PHP is actually an ordered map. 

所以是的,他们总是有序的。 数组实现为散列表 。

从PHP手册 :

arrays是有序的。 订单可以使用各种分拣function进行更改。 有关更多信息,请参阅数组函数部分。

我一直依靠这样的事实,他们是有秩序的,而且在我所有的每一个项目中都一直工作。