在某些条件下从JSON中选择

时间:2016-08-15 09:55:25

标签: php json

如果我有下面的JSON,那么在Name时如何获得AgeID == 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;
}

2 个答案:

答案 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的答案也是正确的。