【问题标题】:Access multidimensional array by string with delimiter通过带分隔符的字符串访问多维数组
【发布时间】:2011-09-22 19:05:34
【问题描述】:

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

<?php

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

?>

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

【问题讨论】:

    标签: php arrays multidimensional-array


    【解决方案1】:

    你可以使用

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

    【讨论】:

    • 非常感谢
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-16
      • 1970-01-01
      • 2013-10-30
      • 1970-01-01
      • 2013-03-03
      • 2015-06-07
      • 1970-01-01
      相关资源
      最近更新 更多