我来自python背景,类似的python数据类型(字典)是一组无序键值对。
我想知道PHP关联数组是否是无序的?它们似乎是订购的。
$test = array(
'test' => 'test',
'bar' => 'bar',
);
var_dump($test);
var_dump(array_slice($test, 0, 1));
测试总是在bar之前进行,我可以按照你的意愿切片。那么这总是保证在php版本之间订购吗?订单只是我声明数组的顺序吗?所以有些内部指向'test'将[0]放在数组中?我读过http://php.net/manual/en/language.types.array.php,但它并没有对这个问题有太多了解。感谢您的回复。 TY
答案 0 :(得分:52)
PHP关联数组(以及数字数组)是有序的,PHP提供各种函数来处理数组键排序,如ksort()
,uksort()
和{ {3}}
此外,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 中的数组实际上是有序地图。映射是将值与键关联的类型。此类型针对多种不同用途进行了优化;它可以被视为数组,列表(向量),哈希表(地图的实现),字典,集合,堆栈,队列,甚至更多。由于数组值可以是其他数组,因此树和多维数组也是可能的。
答案 1 :(得分:8)
答案 2 :(得分:1)
来自php manual:
Arrays已订购。可以使用各种排序功能更改订单。有关详细信息,请参阅array functions部分。
我依赖于这样一个事实,即它们已被订购,并且在我曾经拥有的每个项目中都能保持一致。
答案 3 :(得分:0)
数组是有序的,但这并不意味着键是排序的,这意味着它们是按给出的顺序排列的。在未指定精确顺序的情况下,但这似乎是您在其中引入键值对的顺序。
要理解它,请考虑不下订单意味着什么? 好想一下关系数据库中的关系。 关系不是固有的顺序:当您通过查询访问数据库时,除非您提供 order 子句,否则可以按任何顺序返回相同的数据。 即使未修改数据,也可以按不同顺序返回相同数据。