一尘不染

是否已订购PHP关联数组?

php

我来自python背景,类似的python数据类型(字典)是一组 无序 的键值对。

我想知道PHP关联数组是否无序?他们似乎是有序的。

$test = array(
  'test' => 'test',
  'bar' => 'bar',
);

var_dump($test);

var_dump(array_slice($test, 0, 1));

测试总是在bar之前进行,我可以如您所见地对该数组进行切片。那么,是否始终保证可以跨PHP版本订购?该命令就是我声明数组的命令吗?因此,内部是否有某些东西指向“测试”以将[0]放置在数组中?我已经阅读了http://php.net/manual/en/language.types.array.php,但是在这个问题上并没有太多的启示。感谢您的答复。泰


阅读 247

收藏
2020-05-29

共1个答案

一尘不染

PHP关联阵列(以及数字阵列) 是有序的
,并且PHP提供的各种功能,以解决诸如数组键排序ksort()uksort()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中的数组 实际上是有序映射
。映射是一种将值与键相关联的类型。该类型已针对多种不同用途进行了优化。可以将其视为数组,列表(向量),哈希表(地图的实现),字典,集合,堆栈,队列,甚至更多。由于数组值可以是其他数组,因此树和多维数组也是可能的。

2020-05-29