我有一个具体问题。我需要在嵌套数组中获取和设置值。数组因场合而异(动态),但我可以访问另一个包含嵌套值路径的数组(让我们称之为父数组)。
使用我想要访问或更改的值的数组(让我们称之为主数组)可以如下所示:
$form = array(
'field => array(
'und' => array(
0 => array(
'some_key' => 'foo'
)
)
)
);
..在这种情况下,父数组如下所示:
$parents = array(
'field',
'und',
0,
);
但主阵列也可能如下所示:
$form = array(
'field => array(
'und' => array(
0 => array(
'another_field' => array(
'und' => array(
0 => array(
'some_key' => 'foo'
)
)
)
)
)
)
);
父数组然后看起来像这样。
$parents = array(
'field',
'und',
0,
'another field',
'und'
0
);
我希望能够访问嵌套数组中的值,即:
$value = $form['field']['und'][0]['some_key']
我不能这样做,因为我需要的价值将在下一次出现在另一个地方。唯一告诉我嵌套数组中值有多深的是父数组。
如果它是固定数组,我可以这样做:
$value = $form[$parent[0]][$parent[1]][$parent[3]]['some_key'];
但它不是......
我如何去构建......我......我甚至都不知道它叫什么。路径?我想根据父数组中的信息构造上面的$value
数组。
我希望能够做到这样的事情:
$path = '';
foreach ($parents as $key => $value) {
$path = $path . '[' . $value . ']';
}
$value = $form . $path . ['some_key'];
注意:对于任何想知道这是Drupals的Form API在工作的人,但问题更多的是关于PHP而不是Drupal。