通过php中的变量访问对象属性


Accessing object property by variable in php

目标:我试图通过让用户输入所需的属性来读取anyjson文件的某些部分。

假设我有一个看起来像这样的对象:

"adverts": [
    {
    "id": "33655628",
    "companyInfo": {
            "companyName": "Company A",
            "homepage": "http://companya.com",
            "companyText": null
    },
    ...
]

我想通过变量指定属性名称或"路径"来访问属性。访问第一级($item->$_id)很好,但我如何通过等变量直接访问嵌套属性companyName

 $_name = "companyInfo->companyName";

例如:

$_repeat = "adverts";
$_id = "id";
$_name = ??????
foreach($data->$_repeat as $item){
    var_dump($item->$_id);
    var_dump($item->$_name);
}

编辑:作为澄清:我希望这对任何JSON对象都是通用的!

初步解决方案:我通过@Carlos:建议的循环得到了想要的结果

$_title_a = explode(".",$_title);
$current = $document;
foreach($_title_a as $a){
    $current = $current->$a;
}
var_dump($current);

如果有人有更好的建议,我会很高兴听到的。谢谢大家!

您为什么需要这个?

你所要做的就是:

$jsonData = json_decode($jsonString, true);
echo $jsonData['adverts'][0]['companyInfo']['companyName'];
//or
foreach($jsonData['adverts'] as $advert){
    echo $advert['companyInfo']['companyName'];
}

您似乎有json数据。。你可以使用下面的代码。。

$obj= json_decode($yourJsonData);
print_r($obj);
foreach ($obj as $key => $value) { 
    $companyinfo = $value['companyInfo']['companyName'];
}

在foreach循环中,您将获得require键和值。。这只是你的一个例子。。