如何找到阵列中的值,该数组在另一个数组中? 所以,我会为我的变量分配正确的值!
这是我的json文件:
{
"id": "number12345",
"model": "324",
"discount": [],
"note": [],
"quantity": "2",
"addresses": [
{
"first": [
{
"type": "billing",
"name": "Jo",
"number": "01"
},
{
"type": "shipping",
"name": "Susuan",
"number": "03"
}
]
},
{
"seconde": [
{
"type": "billing",
"name": "Jony",
"number": "02"
},
{
"type": "shipping",
"name": "Ladye",
"number": "05"
}
]
}
]
}
这是我想要得到的值的变量:
$firstTypeOne = 'billing';
$firstTypeTwo = 'shipping';
$firstNameOne = 'Jo';
$firstNameTwo = 'Susuan';
$firstNumberOne = '01';
$firstNumberTwo = '03';
我试过这个来找到值:
ini_set('display_errors', 1);
ini_set('log_errors', 1);
$dataJson = "mydatafile.json";
$dataJson = file_get_contents($dataJson);
//var_dump(json_decode($dataJson));
//echo '<BR>';
//var_dump(json_decode($dataJson, true));
$decodeDataJson = json_decode($dataJson);
foreach ($decodeDataJson->addresses->first as $obj) //here is line 17 !!!!!!!!!!!!!!!!!!!!!!!!
{
echo $firstTypeOne = $obj->type . '< br>' . $firstNameOne = $obj->name . '< br>' . $firstNameTwo = $obj->name;
}
我有一些错误:这是错误消息: 注意:尝试在第17行的C:\ inetpub \ wwwroot \ test \ index.php中获取非对象的属性
警告:在第17行的C:\ inetpub \ wwwroot \ test \ index.php.php中为foreach()提供的参数无效
为什么我没有&#34;回声&#34;? 如何为变量分配正确的值?
祝你有个愉快的一天 感谢
答案 0 :(得分:0)
你的json嵌套了多个级别。您需要两个循环来访问您正在寻找的变量。另外,由于内部元素的名称不同,因此您需要一种方法来获取该属性。试试这个:
foreach ($json->addresses as $obj) {
foreach($obj->{key(get_object_vars($obj))} as $innerObject) {
echo $firstTypeOne = $innerObject->type . '< br>' . $firstNameOne = $innerObject->name . '< br>' . $firstNameTwo = $innerObject->name;
}
}
我希望有所帮助!还可以考虑使用在线json查看器,以便您可以轻松查看如何访问您正在寻找的属性。这就是我刚刚做的。 :)
答案 1 :(得分:-1)
@Chip Dean
我认为这不是必要的。因为您只需了解结构并直接获取它们即可。因此,如果他想在他的json中获取对象或数组的元素,他可以直接使用它,如果它不是空的!
正如我写的那样,他应该尝试var_dump
$decodeDataJson
$decodeDataJson->addresses
$decodeDataJson->addresses->first
在他获得循环之前,他应该添加
if(isset($variable))
{
foreach() ...
使用isset,他可以处理他的异常。