Php 使用不确定的键数获取多维数组中的元素
这有点奇怪,但我无法理解。我有一个多维数组,它的长度和维数未知。我还有一系列的键,如下所示:Php 使用不确定的键数获取多维数组中的元素,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,这有点奇怪,但我无法理解。我有一个多维数组,它的长度和维数未知。我还有一系列的键,如下所示: $keys = array(0, 2, 1, 0); 现在,如果这个键数组有一个确定的大小,我只需像这样访问我的多维数组: $multidimensional_array[$keys[0]][$keys[1]][$keys[2]][$keys[3]]; 问题是它不会,密钥数组的长度将发生很大变化。是否有人知道循环可以遍历密钥数组,然后相应地访问多维数组?假设这样的数组: $multidimensio
$keys = array(0, 2, 1, 0);
现在,如果这个键数组有一个确定的大小,我只需像这样访问我的多维数组:
$multidimensional_array[$keys[0]][$keys[1]][$keys[2]][$keys[3]];
问题是它不会,密钥数组的长度将发生很大变化。是否有人知道循环可以遍历密钥数组,然后相应地访问多维数组?假设这样的数组:
$multidimensional_array = array(
0 => array(
2 => array(
1 => array(
0 => 'value'
)
)
)
);
这些钥匙:
$keys = array(0, 2, 1, 0);
你可以做:
$current = $multidimensional_array;
foreach($keys as $key) {
$current = $current[$key];
}
var_dump($current); //'value'
编辑:
下面是一个有参考的例子
$current = &$multidimensional_array; // <- $current is reference
foreach($keys as $key) {
$current = &$current[$key]; // <- $current is reference again
}
var_dump($current); //'value'
$current = 'otherValue'; // $multidimensional_array[0][2][1][0] value changed to 'otherValue'
unset($current); // remove reference to be sure you won't break something later by an accident
$current=&$多维数组;//是的,这正是我需要的。没有想到使用一个临时变量,每次都会更改到下一个键。不过,Ahhh发现了这个问题。因为这会创建一个新变量$current
,这意味着我无法更改$多维数组的值,我只能从临时创建的$current
数组中读取它们。但这是一个很好的尝试。你可以使用参考资料。但是要小心引用,因为引用有时会很棘手。为了“安全”,在重复使用之前,始终unset
参考变量。另一方面,一些令人困惑的事情可能会发生。通过使用引用?我不确定我是否知道你的意思。我想你不能举个例子吗?@bige我添加了一个带有引用的示例片段。