Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用不确定的键数获取多维数组中的元素_Php_Arrays_Multidimensional Array - Fatal编程技术网

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我添加了一个带有引用的示例片段。