【发布时间】: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>
想要的结果是<li class="atlanta">Whatever The Trend Is</li>
它在大约 30% 的时间里工作 - 但另外 70% 的时候我得到了这个错误:
致命错误:不能在...中使用 stdClass 类型的对象作为数组
经过一番谷歌搜索后,似乎 obj 必须是数组...我找到的唯一答案是将 $obj 行更改为这样的 true:
$obj = json_decode($result, true);
但是,这只是给了我这个错误:
警告:在...中为 foreach() 提供的参数无效
有谁知道如何将我的代码更改为“数组”,以便 100% 的时间有效?
【问题讨论】:
-
在使用 json_decode 解析之前,您需要添加错误处理程序以捕获任何不可预见的错误(例如服务器中的网络关闭到 twitter)
-
请查看我的编辑,了解如何在 SO 上格式化帖子。您没有费心阅读精心编写的常见问题解答,这让我感到很伤心,该常见问题解答显示在您写问题的方框旁边的显眼位置。
标签: php arrays parsing twitter stdclass