2016-02-26 142 views
2

我有这样的JSON响应JSON解析PHP的问题

{"success":true,"results":[{"response":["random1"],"id":"6566","Limit":1},{"response":["random2"],"id":"6563","Limit":1},{"response":["random3"],"id":"6568","Limit":1}]} 

所有我需要的是从响应提取random1,random2,随机,3所以最终的结果将是:

  • random1
  • random2
  • random3

我有此脚本

$jsonData = file_get_contents("json"); 

$json = json_decode($jsonData,true); 

foreach($json["results"][0]["response"] as $data) { 
{ 
    echo json_encode($data); 

} 
} 

但是,这将只提取

  • random1

如果我改变[0][1]将提取random2和[2] random3 如何,我可以得到random1,random2,随机3,一次回应?所以最终的回音是:

  • random1
  • random2
  • random3

预先感谢您,任何帮助,将不胜感激!

回答

3

循环在你$json['result']你做什么只接收第一指标0具有random1作为其response

$json = '{"success":true,"results":[{"response":["random1"],"id":"6566","Limit":1},{"response":["random2"],"id":"6563","Limit":1},{"response":["random3"],"id":"6568","Limit":1}]}'; 
$json = json_decode($json,true); 

foreach($json["results"] as $data) { 
    echo $data['response'][0]."\n"; 
} 

试试吧here


更新

如果你想过滤让我们说random1然后做这样的

$json = json_decode($json,true); 
$filter = array("random1"); //You can add items to filter 
$result = array(); 
foreach($json["results"] as $data) { 
    if(!in_array($data['response'][0],$filter)) 
     $result[] = $data; 
} 
print_r($result); 

$result将只包含random2 & random3

+0

谢谢你这么多,这是真正的工作! –

+0

@AlexandruVorobchevici没问题。很高兴我帮了忙。确保接受将来参考的答案,并帮助他人解决同样的问题。 – roullie

+0

是否有任何更改在此插入词语过滤器?所以我可以过滤一些我尝试过的单词if(strpos($ data,'random1')!== false)但不会工作 –

0

results是一个数组,所以你得到了数组中的第一个由这样的:$json["results"][0]

如果要遍历所有的值,它应该是这样的:

foreach($json["results"] as $data) { 
    echo json_encode($data['response']); 

} 
0
foreach($json["results"] as $data) { echo json_encode($data['response']);}