如何使用字符串从嵌套数组中获取值

Awa*_*wan 1 php arrays string multidimensional-array

我有一个像这样的数组:

$temp = array( '123' => array( '456' => array( '789' => '0' ) ),
               'abc' => array( 'def' => array( 'ghi' => 'jkl' ) )
             );
Run Code Online (Sandbox Code Playgroud)

我有一个像这样的字符串:

$address = '123_456_789';
Run Code Online (Sandbox Code Playgroud)

我可以得到$temp['123']['456']['789']使用上述数组$temp和字符串的价值$address吗?

有什么方法可以做到这一点,并且使用它是否是一种好习惯?

Typ*_*pel 5

这是一个简单的函数,它接受数组和字符串地址,其中的键由任何定义的定界符分隔。通过这种方法,我们可以使用for循环迭代到所需的数组深度,如下所示。

<?php
function delimitArray($array, $address, $delimiter="_") {
    $address = explode($delimiter, $address);
    $num_args = count($address);

    $val = $array;
    for ( $i = 0; $i < $num_args; $i++ ) {
        // every iteration brings us closer to the truth
        $val = $val[$address[$i]];
        }
    return $val;
    }

$temp = array("123"=>array("456"=>array("789"=>"hello world")));
$address = "123_456_789";
echo delimitArray($temp,$address,"_");
?>
Run Code Online (Sandbox Code Playgroud)