使用递归键从多维数组中检索值

时间:2016-02-24 00:45:50

标签: php

让我们说我有一个像这样的多维数组:

$array = array(
    'first' => array(
        'second' => array(
            'last1' => array(
                'key1' => 'value1',
                'key2'  => 'value2',
            ),
            'last2' => array(
                'key3' => 'value3',
                'key4' => 'value4',
            ),
        ),
    ),
);

要检索子数组key1的键last1的值,我会使用:

$value = $array['first']['second']['last1']['key1'];
// Output value1

在我的实际用例中,我需要从以下字符串中检索key1的值:

$param = 'first.second.last1.key1';

我按顺序将它转换为一个键数组:

$keys = explode('.', $param);
// Output array('first', 'second', 'last1', 'key1')

要在爆炸键之后检索值,我使用以下方法:

function get_value_from_keys(array $array, array $keys) {
    $lastKey = $keys[count($keys) - 1];

    foreach ($keys as $key) {
        $newArray = $newArray[$key];

        if ($key == $lastKey) {
            break;
        }
    }

    return $newArray;
}

get_value_from_keys($array, $keys);
// Output value1

但是现在,我需要设置值,问题是:

如何在不对密钥进行硬编码的情况下动态更改key1的值?

在不循环播放数组的情况下,我不能使用与get_value_from_keys相同的逻辑。

0 个答案:

没有答案