【问题标题】:JSON parsing php issueJSON解析php问题
【发布时间】:2016-02-26 08:44:24
【问题描述】:

我有这个 json 响应

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

我只需要从响应中提取 random1,random2,random,3 ,因此最终结果将是:

  • 随机1
  • 随机2
  • 随机3

我有这个脚本

$jsonData = file_get_contents("json");

$json = json_decode($jsonData,true); 

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

}
}

但这只会提取

  • 随机1

如果我在[1] 中更改[0] 将提取random2 和[2] random3 我怎样才能得到 random1,random2,random3, 一次响应?所以最终的回声将是:

  • 随机1
  • 随机2
  • 随机3

提前感谢您,任何帮助将不胜感激!

【问题讨论】:

    标签: php json parsing


    【解决方案1】:

    循环查看您的$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

    【讨论】:

    • @AlexandruVorobchevici 没问题。很高兴我帮了忙。确保接受未来参考的答案,并帮助其他人解决同样的问题。
    • 在此插入单词过滤器是否有任何更改?所以我可以过滤一些我尝试过的单词 if(strpos($data, 'random1') !== false) 但不起作用
    • @AlexandruVorobchevici 什么样的词? random1 到 random3?
    • 假设我要过滤 random1.. 所以最终结果将是 random2 和 random3
    • 用 foreach($json["results"] as $data) { if(preg_match('/^(badword)$/i',$data['results'][0]) 修复) 继续; echo $data['answers'][0]."\n"; } 再次感谢您的帮助!
    【解决方案2】:

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

    如果要迭代所有的值,应该是这样的:

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

    【讨论】:

      【解决方案3】:
      foreach($json["results"] as $data) {    echo json_encode($data['response']);}
      

      【讨论】:

        猜你喜欢
        • 2016-08-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多