我有以下PHP代码:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$URL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$result = curl_exec($ch);
curl_close($ch);
$obj = json_decode($result);
foreach ($obj[0]->trends as $trend) echo utf8_decode($trend->name);
适用于URL#1(进入变量$ URL):
http://api.twitter.com/1/trends/1.json?exclude=hashtags
但是导致错误“不能将stdClass类型的对象用作数组”用于URL#2: http://api.twitter.com/1/trends/weekly.json?exclude=hashtags
我已经搜索了一段时间,但无法找出解决此问题并处理这两个网址的代码。
非常感谢任何帮助。
答案 0 :(得分:1)
第一个URL提供JSON数组作为根元素。它包含一个对象,该对象又包含一个名为trends
的数组。您正在foreach
中正确访问它,如此:
$obj[0]->trends
但第二个URL提供JSON对象作为根元素,其中包含一个名为trends
的对象。因此,您无法使用$obj[0]
来访问该根对象中的内容。该对象包含一周中每一天的趋势名称数组,因此您需要嵌套两个foreach
循环以获取趋势信息:
// Loop through each day of the week
foreach ($obj->trends as $date => $trends) {
// Get each trending topic for this day
foreach ($trends as $trend) {
echo utf8_decode($trend->name);
}
}