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

时间:2015-02-24 12:52:25

标签: php object

目的: 我试图通过让用户输入所需的属性来阅读任何 json文件的某些部分。

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

"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);

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

2 个答案:

答案 0 :(得分:0)

您似乎有json数据..您可以使用以下代码..

$obj= json_decode($yourJsonData);
print_r($obj);

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

在foreach循环中,你将获得需要键和值..这只是你的一个例子..

答案 1 :(得分:0)

为什么你确实需要这个?

您所要做的就是:

$jsonData = json_decode($jsonString, true);

echo $jsonData['adverts'][0]['companyInfo']['companyName'];

//or

foreach($jsonData['adverts'] as $advert){
    echo $advert['companyInfo']['companyName'];
}