Php 从数组_键返回的键的顺序是否与输入数组中的顺序相同?
给定如下所示的关联数组Php 从数组_键返回的键的顺序是否与输入数组中的顺序相同?,php,Php,给定如下所示的关联数组 $field_defaults = array( 'id' => 0, 'name' => 'new item', 'desc' => '', 'parent_id' => 0, ); 我可以依靠array\u keys()按指定的顺序返回键吗?或者,更准确地说,由于PHP中的数组似乎具有稳定的顺序,因此,array\u keys()返回的键是否与它们在输入数组中出现的顺序相同?政府没有给出任何暗示 当我尝试这样做时,他们似乎尊重
$field_defaults = array(
'id' => 0,
'name' => 'new item',
'desc' => '',
'parent_id' => 0,
);
我可以依靠array\u keys()
按指定的顺序返回键吗?或者,更准确地说,由于PHP中的数组似乎具有稳定的顺序,因此,array\u keys()
返回的键是否与它们在输入数组中出现的顺序相同?政府没有给出任何暗示
当我尝试这样做时,他们似乎尊重最初的秩序,但我希望能够依靠这种行为;博士:理论上你不能指望它;出于实际目的,你可以
由于文件不能保证订购,那么技术上正确的答案是“不,你不能指望” 这是因为从理论上讲,开发人员可以选择保留在将来更改实现的选项,以便不再遵守现有的顺序(可能是为了提高性能或获得其他好处) 现在作为一个实际问题,我们知道——PHP数组是有序的容器(其中有一个值的链接列表)——这是您永远不会期望更改的
如果它这样做了,那么更改将提示数组的内部实现发生相应的重大更改,而这反过来可能会破坏许多其他代码。我不认为这会很快发生。如果您担心,您可以选择一个作为正确的顺序,然后在此基础上重新实现另一个函数。如果您关心这两个调用之间的一致性,您可能会同时调用
array\u键
和array\u值
。那么,为什么不同时做这两件事呢?例如,假设array_keys()
的顺序是“正确的”。然后做:
函数arrayKV($arr){
$keys=数组_键($arr);
$values=array();
foreach($key作为$key){
$values[]=$arr[$key];
}
返回数组('keys'=>$keys,'values'=>$values);
}
这样,你就知道它们的顺序是一样的。或者,您可以提供密钥作为订单使用:
function arrayValuesStable($arr, $keys) {
$values = array();
foreach($keys as $key) {
$values[] = $arr[$key];
}
return $values;
}
正如我们今天发现的那样,仅供阅读本文的任何人参考-你不能指望这一点。它并不总是尊重订购。@Kyron您能提供更多的细节吗?