PHP中是否保证关联数组的顺序?

Asu*_*uah 11 php

当我在php中的associatve数组上执行foreach循环时,执行它的顺序是它的定义顺序.

例如:

$arr = array("z" => "z", "a" => "a", "b" => "b");

foreach($arr as $key => val)
  print("$key: $val\n");
Run Code Online (Sandbox Code Playgroud)

输出:

z: z
a: a
b: b
Run Code Online (Sandbox Code Playgroud)

$arr = array("a" => "a", "b" => "b", "z" => "z");
Run Code Online (Sandbox Code Playgroud)

输出:

a: a
b: b
z: z
Run Code Online (Sandbox Code Playgroud)

那么我的问题是:这种行为是在规范级别定义的吗?我可以合理地确定在将来的PHP版本中不会更改此行为吗?

Tom*_*igh 21

PHP手册

PHP中的数组实际上是一个有序映射.映射是将值与键关联的类型.此类型针对多种不同用途进行了优化; 它可以被视为数组,列表(向量),哈希表(地图的实现),字典,集合,堆栈,队列,甚至更多.

数组是有序的.可以使用各种排序功能更改订单.

因此,您可以确定(至少目前)订单将得到维护.如果这种行为发生变化,我会非常惊讶,因为它是明确说明的,因此会有大量依赖它的代码.