在php中通过变量访问对象属性
目标: 我试图通过让用户输入所需的属性来读取任何json文件的某些部分 假设我有一个如下所示的对象:在php中通过变量访问对象属性,php,object,Php,Object,目标: 我试图通过让用户输入所需的属性来读取任何json文件的某些部分 假设我有一个如下所示的对象: "adverts": [ { "id": "33655628", "companyInfo": { "companyName": "Company A", "homepage": "http://companya.com", "companyText": null }, ... ]
"adverts": [
{
"id": "33655628",
"companyInfo": {
"companyName": "Company A",
"homepage": "http://companya.com",
"companyText": null
},
...
]
我想通过变量指定属性名称或路径来访问属性。
访问第一级$item->$\u id可以正常工作,但是如何通过变量(例如)直接访问嵌套属性companyName
$_name = "companyInfo->companyName";
例:
编辑:
澄清一下:我希望这对于任何JSON对象都是通用的
初步解决办法:
我按照@Carlos的建议通过循环得到了想要的结果:
$_title_a = explode(".",$_title);
$current = $document;
foreach($_title_a as $a){
$current = $current->$a;
}
var_dump($current);
如果有人有更好的建议,我会很高兴听到的。谢谢大家 您似乎随身携带json数据。您可以使用以下代码
$obj= json_decode($yourJsonData);
print_r($obj);
foreach ($obj as $key => $value) {
$companyinfo = $value['companyInfo']['companyName'];
}
在foreach循环中,您将获得require键和值。这只是一个示例。为什么您需要这个 你所要做的就是:
$jsonData = json_decode($jsonString, true);
echo $jsonData['adverts'][0]['companyInfo']['companyName'];
//or
foreach($jsonData['adverts'] as $advert){
echo $advert['companyInfo']['companyName'];
}
我不想打印整个json对象。问题是,我如何通过variable@Holle..updated根据您的要求回答..请查看访问json的嵌套属性,您应该知道深度..因此基于该深度,您可以循环并获取该数据,或者您应该知道该特定属性的索引数据…那么你是说不能分配多深度变量?是的,但属性名和对象深度未知,因此需要变量。@Holle在这里看一下:谢谢@Carlos!我读了这个答案,但我希望有一个更简单的解决方案,它不涉及循环/搜索,因为我只需要以某种方式将:$item->companyInfo->companyName放入这个$item->companyInfo->companyName。它将要求您执行搜索循环,即使您使用对象,因为您的json是以不同的公司结构构建的。如果你不想要它,你必须假设它总是在第一行索引0中查找。例如,我用循环的初级解决方案更新了我的问题。谢谢,您可能需要解析字符串并在组件上循环。或者使用类似eval的东西。。。
$jsonData = json_decode($jsonString, true);
echo $jsonData['adverts'][0]['companyInfo']['companyName'];
//or
foreach($jsonData['adverts'] as $advert){
echo $advert['companyInfo']['companyName'];
}