【问题标题】:Twitter API Local Trend Parsing - stdClass ErrorTwitter API 本地趋势解析 - stdClass 错误
【发布时间】:2023-04-01 07:26:01
【问题描述】:

我正在尝试从某个位置(在本例中为亚特兰大)解析 Twitter 的最新趋势

这是我的代码:

<html>
  <head></head>
  <body>
    <?php
     $init = 'http://api.twitter.com/1/trends/2357024.json?count=1&callback=?&exclude=hashtags';
     $ch = curl_init();
     curl_setopt($ch, CURLOPT_URL,$init);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
     $result = curl_exec($ch);
     curl_close($ch);
     $obj = json_decode($result);
     foreach ($obj[0]->trends as $trend) {
     echo "<li class=\"atlanta\">".$trend->name."</li>";
}?>
  </body>
</html>

想要的结果是&lt;li class="atlanta"&gt;Whatever The Trend Is&lt;/li&gt;

它在大约 30% 的时间里工作 - 但另外 70% 的时候我得到了这个错误:

致命错误:不能在...中使用 stdClass 类型的对象作为数组

经过一番谷歌搜索后,似乎 obj 必须是数组...我找到的唯一答案是将 $obj 行更改为这样的 true:

$obj = json_decode($result, true);

但是,这只是给了我这个错误:

警告:在...中为 foreach() 提供的参数无效

有谁知道如何将我的代码更改为“数组”,以便 100% 的时间有效?

【问题讨论】:

  • 在使用 json_decode 解析之前,您需要添加错误处理程序以捕获任何不可预见的错误(例如服务器中的网络关闭到 twitter)
  • 请查看我的编辑,了解如何在 SO 上格式化帖子。您没有费心阅读精心编写的常见问题解答,这让我感到很伤心,该常见问题解答显示在您写问题的方框旁边的显眼位置。

标签: php arrays parsing twitter stdclass


【解决方案1】:

@Ken:试试

$obj = json_decode($result, true);
if (is_array($obj)) { 
    foreach ($obj[0]->trends as $trend) {
        echo "<li class=\"atlanta\">" . $trend->name . "</li>";
    }
} else {
   // failure case here
}

【讨论】:

  • 谢谢...我尝试了修复,但是我仍然收到此错误:警告:为 foreach() 提供的参数无效.....
猜你喜欢
  • 2016-03-29
  • 1970-01-01
  • 1970-01-01
  • 2013-04-12
  • 2016-12-16
  • 2014-09-17
  • 2017-03-11
  • 2014-02-07
  • 1970-01-01
相关资源
最近更新 更多