2011-05-02 21 views
2

我使用這個代碼:JSON捲曲 - 爲的foreach無效參數() - PHP

<?php 

$json_url = 'http://search.twitter.com/search.json?q=royal&wedding'; 

$ch = curl_init($json_url); 

$options = array(
CURLOPT_RETURNTRANSFER => true, 
CURLOPT_HTTPHEADER => array('Content-type: application/json') 
); 

curl_setopt_array($ch, $options); 

$result = curl_exec($ch); 

if (!empty($result)){ 
    $json = json_decode($result); 
    foreach ($json->results[0]->text as $t){ 
     var_dump($t); 
    } 
} 

?> 

,但我發現對foreach無效參數?

任何想法?

+0

我不知道該怎麼json_decode的作品,但是,乍一看,似乎你正在尋找您遍歷JSON輸出的[0]結果的文本值。這是錯誤的。嘗試迭代$ json結果變量,並在foreach循環內讀取當前項目的文本值。 – alesdario 2011-05-02 15:00:26

回答

2

嘗試:

var_dump($json->results[0]->text); 

,你會得到這樣的:

string(166) "RT @womensweard... 

這意味着,你正試圖遍歷一個字符串。

我猜,你想要的是:

foreach ($json->results as $t){ 
    var_dump($t->text); 
} 
0

檢查捲曲請求成功:

$result = curl_exec($ch); 

if ($result === FALSE) { 
    die(curl_error($ch)); 
} 

然後檢查你實際收到的JSON數據:

var_dump($result); 

然後檢查json_decode成功:

$json = json_decode($result); 
if(is_null($json)) { 
    die(json_last_error()); 
} 

然後檢查如果json數據中實際存在「結果」條目:

if (!isset($json->results)) { 
    die("No results section"); 
} 
0

想法:$result不是有效的JSON,而您的$result不是數組。

1

您正在循環第一個結果的text屬性。如果你想爲每個結果輸出的text,你需要循環的結果,而不是:

foreach ($json->results as $t){ 
    var_dump($t->text); 
} 
0

添加CURLOPT_SSL_VERIFYPEER =>假以TwitterAPIExchange.php的performRequest()方法中捲曲的選擇似乎解決它。

CF here