这有点奇怪,但我无法理解它。我有一个多维数组,其长度未知,维数未知。我也有像这样的一系列键:
$keys = array(0, 2, 1, 0);
现在,如果这个键数组有一个确定的大小,我就会像这样访问我的多维数组:
$multidimensional_array[$keys[0]][$keys[1]][$keys[2]][$keys[3]];
问题在于它没有,密钥数组的长度会发生很大变化。有没有人知道一个循环可以遍历键数组然后相应地访问多维数组?
答案 0 :(得分:1)
假设有这样的数组:
$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