Twitter Trends API weekly.json导致错误“无法使用stdClass类型的对象作为数组”

时间:2010-12-30 11:01:38

标签: php json twitter

我有以下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

我已经搜索了一段时间,但无法找出解决此问题并处理这两个网址的代码。

非常感谢任何帮助。

1 个答案:

答案 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);
    }
}