如果我有下面的JSON,那么在Name
时如何获得Age
和ID == 6
的值?
[{"Name":" Jim", "ID":"6", "Age": "0"},{"Name":" Bob", "ID":"53", "Age": "0"}]
到目前为止,我试图这样做,但是我收到以下错误:
注意:尝试在第3行获取非对象的属性
$json = '[{"Name":" Jim", "ID":"6", "Age": "0"},{"Name":" Bob", "ID":"53", "Age": "0"}]';
$json2 = json_decode($json);
if($json2->ID == '6') {
echo $json2->Name;
echo $json2->Age;
}
答案 0 :(得分:2)
使用简单的循环:
$json = '[{"Name":" Jim", "ID":"6", "Age": "0"},{"Name":" Bob", "ID":"53", "Age": "0"}]';
$array = json_decode($json);
foreach($array as $person){
if($person->ID == '6') {
echo $person->Name;
echo $person->Age;
}
}
如果你必须访问数组中的多个人,那么创建一个以id为索引的新数组可能是有意义的:
$json = '[{"Name":" Jim", "ID":"6", "Age": "0"},{"Name":" Bob", "ID":"53", "Age": "0"}]';
$array = json_decode($json);
$indexPeopleArray=[];
foreach($array as $person){
$indexPeopleArray[$person->ID]=$person;
}
然后你可以简单地访问每个人:
echo $indexPeopleArray[6]->name; //jim
echo $indexPeopleArray[53]->name; //bob
答案 1 :(得分:1)
您可以使用
获取它if($json2[0]->ID == '6') {
echo $json2[0]->Name;
echo $json2[0]->Age;
}
//因为在json中[
表示数组。因此当您使用json_decode
解码它时,创建的数组就像。
array[0][Name]
array[0][Age]
array[0][Age]
array[1][Name]
array[1][Age]
array[1][Age]
@steve的答案也是正确的。