PHP通过另一个数组获取动态嵌套数组值

时间:2015-06-24 00:14:20

标签: php arrays drupal

我有一个具体问题。我需要在嵌套数组中获取和设置值。数组因场合而异(动态),但我可以访问另一个包含嵌套值路径的数组(让我们称之为父数组)。

使用我想要访问或更改的值的数组(让我们称之为主数组)可以如下所示:

$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。

0 个答案:

没有答案