使用分隔符访问多维数组中的字符串

4
假设我有一个多维数组,类似于这样的东西:
<?php

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

?>

我希望能够通过将类似于"test1.test2.test3"的字符串传递给一个函数来访问数组元素,该函数会调用数组元素。我可以使用eval()函数,通过替换字符串中的[]来调用数组元素(例如$array["test2]["test3"]...),但我想知道是否有一种更稳定的方法来调用数组元素,而无需遍历其所有深度或使用eval()

2个回答

5
你可以使用:
function get_multi($arr, $str) {
    foreach (explode('.', $str) as $key) {
        if (!array_key_exists($key, $arr)) {
            return NULL; 
        }
        $arr = $arr[$key];
    }

    return $arr;
}

非常感谢。 - DEV Tiago França

0

Symfony为此提供了PropertyAccess组件。

PropertyAccess组件提供了使用简单字符串符号从对象或数组中读取和写入的功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接