2010-12-13 106 views
0

Je suis en train d'analyser la dernière tendance Twitter à partir d'un emplacement (Atlanta dans ce cas)API Twitter Local Tendance Parsing - stdClass Erreur

Voici mon code:

<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> 

Le résultat souhaité serait <li class="atlanta">Whatever The Trend Is</li>

Il travaille environ 30% du temps - mais l'autre 70% je reçois cette erreur:

erreur fatale: Impossible d'utiliser l'objet de type stdClass comme tableau dans. ..

Après quelques googler il semble que le obj doit être rangée ... La seule réponse que j'ai trouvé est de changer la ligne obj $ à un vrai comme ceci:

$obj = json_decode($result, true); 

Cependant, que le simple me donne cette erreur:

Warning: Invalid argument supplied for foreach() in...

Est-ce que quelqu'un sait comment changer mon code dans un « tableau » de sorte qu'il fonctionne 100% du temps?

+0

Vous devez ajouter au gestionnaire d'erreurs pour capturer toute erreur imprévue (comme réseau dans votre serveur twitter) avant Parse à l'aide json_decode – ajreal

+0

S'il vous plaît vérifier mon édition pour savoir comment formater messages sur SO. Cela fait mal à mes sentiments que vous n'avez pas pris la peine de lire la FAQ minutieusement compilée qui vous a été montrée à côté de la boîte où vous avez écrit votre question. –

Répondre

0

@Ken: Essayez

$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 
} 
+0

Merci ... J'ai essayé ce correctif, Cependant, je reçois toujours cette erreur: Attention: Argument invalide fourni pour foreach() ..... – Ken