通过带分隔符的字符串访问多维数组

set*_*kie 4 php arrays multidimensional-array

假设我有一个像这样的多维数组:

<?php

$array = array("test1" => array("test2" => array("test3" => 1)), ... foo1 = array("foo2" => 2));

?>
Run Code Online (Sandbox Code Playgroud)

我想通过将字符串传递"test1.test2.test3"给函数来访问数组元素,该函数又调用数组元素。我可以eval()通过将字符串替换为[](calling $array["test2]["test3"]...) 来使用,但我想知道是否有一种不同的更可靠的方法来调用数组元素,而无需遍历其所有深度或 use eval()

Rus*_*sak 5

你可以使用

function get_multi($arr, $str) {
    foreach (explode('.', $str) as $key) {
        if (!array_key_exists($key, $arr)) {
            return NULL; 
        }
        $arr = $arr[$key];
    }

    return $arr;
}
Run Code Online (Sandbox Code Playgroud)