API Twitter Trends API weekly.json, вызывающий ошибку «Невозможно использовать объект типа stdClass в качестве массива» - PullRequest
0 голосов
/ 30 декабря 2010

У меня есть следующий код 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

Я искал некоторое время, но не могу найти код, чтобы это исправить и обработать оба URL.

Любая помощь будет высоко ценится.

1 Ответ

1 голос
/ 30 декабря 2010

Первый 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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...