php在关联数组中是否保持顺序?

php在关联数组中是否保持顺序?,php,arrays,associative-array,Php,Arrays,Associative Array,可能重复: 若我用不同的键将项添加到关联数组中,添加顺序是否守恒?如何访问给定元素的“上一个”和“下一个”元素 是的,php数组具有隐式顺序。使用和-或只使用-来检查它。是的,它确实保留了顺序。您可以将php数组视为 您可以认为元素是按“索引创建时间”排序的。比如说 $a = array(); $a['x'] = 1; $a['y'] = 1; var_dump($a); // x, y $a = array(); $a['x'] = 1; $a['y'] = 1; $a['x'] = 2;

可能重复:


若我用不同的键将项添加到关联数组中,添加顺序是否守恒?如何访问给定元素的“上一个”和“下一个”元素

是的,php数组具有隐式顺序。使用和-或只使用-来检查它。

是的,它确实保留了顺序。您可以将php数组视为

您可以认为元素是按“索引创建时间”排序的。比如说

$a = array();
$a['x'] = 1;
$a['y'] = 1;
var_dump($a); // x, y

$a = array();
$a['x'] = 1;
$a['y'] = 1;
$a['x'] = 2;
var_dump($a); // still x, y even though we changed the value associated with the x index.

$a = array();
$a['x'] = 1;
$a['y'] = 1;
unset($a['x']);
$a['x'] = 1;
var_dump($a); // y, x now! we deleted the 'x' index, so its position was discarded, and then recreated
总之,如果您要添加一个当前不存在于数组中的项,则该项的位置将是列表的末尾。如果要更新现有密钥的条目,则位置不变

使用上面演示的自然顺序在阵列上循环。如果您愿意,您也可以使用()和friends,尽管自从foreach被引入该语言以来,它们很少被使用

另外,()和()也使用自然数组顺序输出结果

如果您熟悉java,LinkedHashMap是最相似的数据结构