【问题标题】:JSON cURL - invalid argument for foreach() - PHPJSON cURL - foreach() 的无效参数 - PHP
【发布时间】:2011-08-17 01:13:30
【问题描述】:

我正在使用此代码:

<?php

$json_url = 'http://search.twitter.com/search.json?q=royal&wedding';

$ch = curl_init( $json_url );

$options = array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => array('Content-type: application/json')
);

curl_setopt_array( $ch, $options );

$result =  curl_exec($ch);

if (!empty($result)){
    $json = json_decode($result);
    foreach ($json->results[0]->text as $t){
        var_dump($t);
    }
}

?>

但是我的 foreach 参数无效??

有什么想法吗?

【问题讨论】:

  • 我不知道 json_decode 是如何工作的,但是,乍一看,您似乎正在搜索迭代 json 输出结果 [0] 的文本值。这是错误的。尝试迭代 $json 结果变量,并在 foreach 循环中读取当前项目的文本值。

标签: php json foreach


【解决方案1】:

将 CURLOPT_SSL_VERIFYPEER => false 添加到 TwitterAPIExchange.php 中 performRequest() 方法中的 CURL 选项似乎可以解决这个问题。

cfhere

【讨论】:

    【解决方案2】:

    想法:$result 不是有效的 JSON,而您的 $result 不是数组。

    【讨论】:

      【解决方案3】:

      试试:

      var_dump($json->results[0]->text);
      

      你会得到类似的东西:

      string(166) "RT @womensweard...
      

      这意味着,您正在尝试迭代一个字符串。

      我猜,你想要的是:

      foreach ($json->results as $t){
        var_dump($t->text);
      }
      

      【讨论】:

        【解决方案4】:

        您正在循环第一个结果的 text 属性。如果要为每个结果输出text,则需要循环结果:

        foreach ($json->results as $t){
            var_dump($t->text);
        }
        

        【讨论】:

          【解决方案5】:

          检查 CURL 请求是否成功:

          $result = curl_exec($ch);
          
          if ($result === FALSE) {
              die(curl_error($ch));
          }
          

          然后检查你是否真的收到了 JSON 数据:

          var_dump($result);
          

          然后检查json_decode是否成功:

          $json = json_decode($result);
          if(is_null($json)) {
              die(json_last_error());
          }
          

          然后检查json数据中是否真的有'results'条目:

          if (!isset($json->results)) {
             die("No results section");
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-12-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多