Анализ локальных трендов в API Twitter - ошибка stdClass - PullRequest
0 голосов
/ 13 декабря 2010

Я пытаюсь проанализировать последнюю тенденцию 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 в качестве массива в ...

После некоторого поиска в Google кажется, что obj должен быть массивом. Единственный ответ, который я нашел, - это изменить строку $ obj на true, как это:

$obj = json_decode($result, true);

Однако, это просто дает мне этоошибка:

Предупреждение. В foreach () указан неверный аргумент в ...

Кто-нибудь знает, как преобразовать мой код в массив, чтобы онработать 100% времени?

1 Ответ

0 голосов
/ 14 декабря 2010

@ Кен: Попробуйте

$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
}
...