2010-12-30 2 views
0

I次のPHPコードがあります。Twitterの動向API "は配列としてのタイプはstdClassのオブジェクトを使用することはできません"

 $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へ)URLの#1のために正常に動作します:

http://api.twitter.com/1/trends/1.json?exclude=hashtags

が、エラーURL#2のための "アレイとしてのタイプはstdClassのオブジェクトを使用することはできません" が発生: http://api.twitter.com/1/trends/weekly.json?exclude=hashtags

私はしばらく検索しましたが、これを修正して両方のURLを処理するコードを理解することはできません。

ご協力いただければ幸いです。

+0

お使いのPHPのバージョンは何ですか? – BoltClock

+0

@BoltClock PHPバージョン5.3.0 – tucson

答えて

1

最初のURLはJSON配列をルート要素として提供します。オブジェクトにはtrendsという配列が含まれています。あなたは正確にそうようなあなたのforeachでそれにアクセスしている:

$obj[0]->trends 

しかし、2番目のURLはtrendsと呼ばれるオブジェクトが含まれているルート要素としてJSONオブジェクトを提供しています。したがって、$obj[0]を使用してそのルートオブジェクトに含まれるものにアクセスすることはできません。オブジェクトは、あなたが巣2 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); 
    } 
} 
+0

ご意見ありがとうございます。別のコードが必要だとわかっていますが、URL#2の場合はどのようにトレンド名にアクセスできますか? – tucson

+0

@tucson:私の編集を参照してください。 – BoltClock

+0

すばらしい;できます。どうもありがとう。 – tucson

関連する問題