PHP - 从键数组中获取嵌套数组的值

问题描述 投票:1回答:2

我有以下内容:

$values = Array (
          ['level1'] => Array (
             ['level2'] => Array(
                 ['level3'] => 'Value'
                 )
              )
          )

我还有一系列键:

$keys = Array (
          [0] => 'level1',
          [1] => 'level2',
          [2] => 'level3'
        )

我希望能够使用$ keys数组,因此我可以提出:$ values ['level1'] ['level2'] ['level3']。级别和键名称的数量将发生变化,因此我需要一个解决方案来读取我的$ keys数组,然后遍历$ values,直到得到最终值。

php arrays loops nested
2个回答
1
投票

你可以迭代$values并存储像这样的$ref

$ref = $values ;
foreach ($keys as $key) {
    if (isset($ref[$key])) {
        $ref = $ref[$key];
    }
}
echo $ref ; // Value

您还可以使用引用(&)来避免数组的复制:

$ref = &$values ;
foreach ($keys as &$key) {
    if (isset($ref[$key])) {
        $ref = &$ref[$key];
    }
}
echo $ref ;

0
投票
<?php

$values['level1']['level2']['level3'] = 'Value';
$keys = array (
          0 => 'level1',
          1 => 'level2',
          2 => 'level3'
        );


$vtemp = $values;

foreach ($keys as $key) {

    try {
        $vtemp = $vtemp[$key];
        print_r($vtemp);
        print("<br/>---<br/>");
    }
    catch (Exception $e) {
        print("Exception $e");  
    }

}

希望这可以帮助。当然删除print语句,但我尝试了它,最后它达到了值。直到它达到它不断击中阵列的值,一次更深一层。

© www.soinside.com 2019 - 2024. All rights reserved.