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

时间:2011-09-22 19:05:34

标签: php arrays multidimensional-array

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

<?php

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

?>

我想通过将类似"test1.test2.test3"的字符串传递给函数来访问数组元素,该函数又调用数组元素。我可以通过用eval()替换字符串来使用[](调用$array["test2]["test3"] ...)但是我想知道在调用数组元素时是否存在不同的更坚实的方法而不遍历所有的它的深度或用途eval()

2 个答案:

答案 0 :(得分:2)

您可以使用

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

    return $arr;
}

答案 1 :(得分:0)

Symfony 为此提供了一个 PropertyAccess 组件。

<块引用>

PropertyAccess 组件提供了使用简单字符串表示法从/向对象或数组读取和写入的功能。