2010-12-13 12 views
0

Ich versuche, den neuesten Twitter Trend von einem Ort (Atlanta in diesem Fall)Twitter API Lokale Trend Parsing - stdClass Fehler

Hier ist mein Code zu analysieren:

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

Das gewünschte Ergebnis wäre <li class="atlanta">Whatever The Trend Is</li>

Es funktioniert ungefähr 30% der Zeit - aber das andere 70% bekomme ich diesen Fehler:

Fatal error: Kann nicht in Objekt vom Typ stdClass als Array. ..

Nach einigen googeln es die obj scheint Array ... Die einzige Antwort sein muss, die ich gefunden habe ist die $ obj Linie zu einem wahren wie folgt zu ändern:

$obj = json_decode($result, true); 

jedoch, dass einfach diesen Fehler gibt mir:

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

Wer weiß, wie mein Code in einen ‚Array‘ zu ändern, so dass es zu 100% der Zeit funktioniert?

+0

Sie müssen in Fehlerbehandlung hinzuzufügen unvorhersehbare Fehler zu fangen (wie Netzwerk nach unten in Ihrem Server Twitter) vor Parse mit json_decode – ajreal

+0

Bitte beachten Sie auch meinen bearbeiten, wie zu formatieren Beiträge auf SO. Es verletzt meine Gefühle, dass Sie sich nicht die Mühe gemacht haben, die sorgfältig zusammengestellten FAQ zu lesen, die Ihnen neben der Box, in der Sie Ihre Frage geschrieben haben, deutlich gezeigt wurden. –

Antwort

0

@Ken: Versuchen

$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

Danke ... Ich habe es versucht, aber ich bekomme immer noch diesen Fehler: Warnung: Ungültiges Argument für foreach() ..... – Ken