PHP-从curl响应中获取特定值

时间:2019-03-05 05:09:09

标签: php json curl

我将数组输出的json解码设置为true。 这是使用curl的以下响应格式:

{
  "process_time": 0.018849853,
  "data": [
    {
      "id": "recent_search",
      "name": "",
      "items": []
    },
    {
      "id": "recent_view",
      "name": "",
      "items": []
    },
    {
      "id": "popular_search",
      "name": "",
      "items": []
    },
    {
      "id": "digital",
      "name": "DIGITAL",
      "items": []
    },
    {
      "id": "autocomplete",
      "name": "AUTOCOMPLETE",
      "items": [
        {
          "keyword": "tas wanita batam",
          "url": "/search?q=tas+wanita+batam&source=universe&st=product",
        },
        {
          "keyword": "tas wanita import",
          "url": "/search?q=tas+wanita+import&source=universe&st=product",
        },
        {
          "keyword": "tas wanita murah",
          "url": "/search?q=tas+wanita+murah&source=universe&st=product",
        },
        {
          "keyword": "tas wanita branded",
          "url": "/search?q=tas+wanita+branded&source=universe&st=product",
        },
        {
          "keyword": "tas wanita fossil",
          "url": "/search?q=tas+wanita+fossil&source=universe&st=product",
        }
      ]
    }
  ]
}

我的PHP代码:

<?php
$url = 'hxxp://domain.com/univ/v8?q=tas+wanita';
$ch=curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$r=curl_exec($ch);
curl_close($ch);

print_r(json_decode($r, true));
?>

我只想将零件项“关键字”保存在php变量中。

我该怎么办?最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

    <?php
        $url = 'hxxp://domain.com/univ/v8?q=tas+wanita';
        $ch=curl_init($url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $r=curl_exec($ch);
        curl_close($ch);

        $data = json_decode($r, true);
        $i=0;
        foreach($data['data'] as $val) {
          foreach($val['items'] as $key => $item) { //it may give warning because empty array (i.e items = [].
             $keywords[$i] = $item['keyword']; // this will store keyword in $keywords array.
             $i++;
          }
        }
        $message = '<html><body>';
        $message .= '<table border="1" cellpadding="10">';
        $message .= "<tr><th><strong>Sr. No.:</strong> </th><th> 
                     <strong>Keyword</strong> </th></tr>";
        foreach ($keywords as $key => $value) {
           $message .= "<tr><td>".$key." </td><td>" .$value. "</td></tr>";
        }
        $message .= "</table>";
        $message .= "</body></html>";
        echo $message;
    ?>

foreach 构造提供了一种遍历数组的简便方法。 foreach仅适用于数组和对象,当您尝试在具有不同数据类型的变量或未初始化的变量上使用它时,将发出错误消息。