首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何动态访问多维数组中的值

如何动态访问多维数组中的值
EN

Stack Overflow用户
提问于 2017-01-26 20:01:41
回答 1查看 64关注 0票数 1

我想要动态访问多维数组,因为我需要在配置文件中显示完整路径。下面是几个我知道如何在某个级别访问该值的示例。

代码语言:javascript
运行
复制
echo $results['Data']['MetaAttrListId']['0'];

$string = "MetaAttrListId";
echo $results['Data'][$string]['0'];

但我希望能够在字符串中提供该区域的完整位置/路径。就像这样。

代码语言:javascript
运行
复制
$string = "['Data']['MetaAttrListId']['0']";
echo $results[$string];

多维数组im访问的输出。

代码语言:javascript
运行
复制
    (
        [Data] => Array
            (
                [MetaTitle] => Array
                    (
                        [0] => Vauxhall combo 1.3 cdti in stunning condition low mileage long mot till august
                    )

                [MetaAttrListId] => Array
                    (
                        [0] => Posted
                        [1] => Make
                        [2] => Model
                        [3] => Year
                        [4] => Mileage
                        [5] => Seller type
                        [6] => Body type
                        [7] => Fuel type
                        [8] => Transmission
                        [9] => Colour
                        [10] => Engine size
                    )

                [MetaAttrListValue] => Array
                    (
                        [0] => 1 day ago
                        [1] => Vauxhall
                        [2] => COMBO
                        [3] => 2005
                        [4] => 79000
                        [5] => Private
                        [6] => Car Derived Van
                        [7] => Diesel
                        [8] => Manual
                        [9] => Red
                        [10] => 1248
                    )

            )

        [Error] => 
    )
EN

回答 1

Stack Overflow用户

发布于 2017-01-26 20:37:46

你可能会尝试我前几天构建的这个函数(也是受到另一个stackoverflow线程的启发,我现在没有找到,但也有类似的问题)

像使用value_in($arrayThingy, 'path.to.that.entry')value_in($arrayThingy, 'path/to/that/entry', '/')一样使用它

希望对您有所帮助,如果您发现任何故障,请报告:)

代码语言:javascript
运行
复制
/**
 * value_in
 * 
 * @param  mixed    $haystack   array or object or nested mix of both
 * @param  string   $path       path in any token-separated notation
 * @param  string   $token      path separator token
 * @return mixed                resolved value
 */
function value_in($haystack, $path, $token = ".") {
    $path = trim($path, $token); // path.to.place
    $segments = explode($token, $path); // ["path", "to", "place"]
    $remains = $haystack;
    foreach ($segments as $segment) {

        if (gettype($remains) === 'array' && isset($remains[$segment])) {
            $remains = $remains[$segment];
        } else if (gettype($remains) === 'object' && isset($remains->$segment)) {
            $remains = $remains->$segment;

        } else {
            return null;
        }
    }
    return $remains;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41873003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档