目的: 我试图通过让用户输入所需的属性来阅读任何 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);
如果有人有更好的建议,我会很高兴听到。谢谢大家!
答案 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'];
}