2013-04-15 128 views
1

我寫的代碼應該做兩件事:1-顯示來自twitter用戶的最新帖子2-搜索特定關鍵字。在第一部分,它完美的作品,但它在「搜索」選項的情況下所傾倒此錯誤消息失敗:PHP中未定義的偏移量錯誤來自json響應

PHP公告:未定義抵消:

我運行這種格式的代碼:

$ php script.php search keyword number 

下面是代碼:

$result = file_get_contents("http://search.twitter.com/search.json?q=$argv[2]&rpp=$argv[3]&include_entities=true&result_type=mixed"); 
    $decoded = json_decode($result,true); 
    for($j=0; $j<$argv[3]; $j++) 
    { 

    echo ($decoded[$j]['text']); 



    } 
+1

的錯誤只是一個通知,它不會停止運行的代碼,這是什麼意思是,雖然烏拉圭回合試圖可能使用處理不當被設置一個數組,最好的辦法是'的print_r() ;'無論你使用的數組是什麼,看看它們是否包含他們想要的。 – Breezer

+0

數組可能不包含任何東西。你應該檢查'isset'什麼的。錯誤的確切線是什麼? – edwardmp

回答

3

我檢查了Twitter的響應,它不匹配您試圖訪問數組的格式。 僅僅因爲在響應中不存在,您無法通過$decoded[$j]['text']訪問數據。

你是什麼意思做的是:

$decoded[results][$j]['text'] 

我檢查了它,這似乎工作正常。從響應(print_r的格式)

的摘錄,你看爲什麼會發生。

Array (
    [completed_in] => 0.015 
    [max_id] => 322818055665225728 
    [max_id_str] => 322818055665225728 
    [page] => 1 
    [query] => testsearch 
    [refresh_url] => ?since_id=322818055665225728&q=testsearch&result_type=mixed&include_entities=1 
    [results] => Array 
    (
     [0] => Array 
     (
      [created_at] => Fri, 12 Apr 2013 21:06:36 +0000 
      [entities] => Array 
+0

不客氣! – edwardmp

0

如果用戶輸入 '10'但查詢只返回9個結果,for循環的第10次迭代將返回該通知(因爲$ decode [9]不存在)。

也許嘗試這樣的事情

$limit = $argv[3]; 

if (count($decoded) < $limit) 
{ 
    $limit = count($decoded); 
} 

for ($j = 0; $j < $limit; $j++) 
{ 
... 
} 
+0

可能是真的,但這不是問題的根源。不過,他應該實施這樣的事情。 – edwardmp