如何在php中使用字符串路径访问嵌套的STDClass?

问题描述 投票:0回答:1

想象一下,你有一个变量$a,它是带有嵌套Stdclasses的Stdclass,依此类推,如下所示:

<?php
$json = '{ "foo": {
    "foo":{
            "foo":"bar"
    }
} }';
$a = json_decode($json);
$b="foo.foo.foo";

print_r($a->foo->foo->foo);
print_r($$b});

?>

现在在变量$b中我有我想要访问的路径。

有没有办法告诉PHP获取该路径的值?

php stdclass
1个回答
1
投票

在点上爆炸,然后迭代,使用每个段作为对象属性。

$path = explode('.', $b);

$current = $a;
foreach ($path as $segment) {
    $current = $current->$segment;
}

var_dump($current);   // bar

如果路径包含未正确映射到对象属性的段,则将获得未定义的属性通知,并以null值结束。

请注意,这仅适用于嵌套对象。如果您的输入JSON包含任何级别的数组,则无法处理它,并且您需要更复杂的东西。

© www.soinside.com 2019 - 2024. All rights reserved.