2014-02-19 35 views
0

我試圖只發送5個調用來從Asana API獲取任務。這裏是我的代碼錯誤您最近發出太多請求。請冷靜一下。在Asana API

$tasks = $client->fetch('https://app.asana.com/api/1.0/workspaces.json'); 
print_r($tasks); 
$i=0; 

while(isset($tasks['result']['data'][$i]['id'])) 
{ 
    $tasks_detail = $client->fetch('https://app.asana.com/api/1.0/workspaces/'.$tasks['result']['data'][$i]['id'].'.json'); 
    print_r($tasks_detail); 

    while(isset($tasks_detail['result']['data'][$i]['id'])) 
    { 
     $tasks_details = $client->fetch('https://app.asana.com/api/1.0/tasks/'.$tasks_detail['result']['data'][$i]['id'].'.json'); 
     print_r($tasks_details); 
     $i++; 
    } 

我只用2 while循環來從之後的API不向呼叫響應API任務。

+0

請格式化你的代碼 – thescientist

+0

已經重新格式化了你的代碼,但是你沒有關閉你發佈的代碼中的第一個'while'。請檢查它! – msturdy

+0

如果$ loops_detail ['result'] ['data'] [$ i] ['id']'沒有爲循環中的第一個API調用設置一個結果,那麼產生了一個無限循環 - 導致無限的API調用。 – Chris

回答

2

考慮這種情況:

$tasks['result']['data'][$i]['id'] 

存在,

$tasks_detail['result']['data'][$i]['id'] 

不存在。

你將永遠循環,因爲$ i永遠不會變大; 考慮這種情況:

$tasks['result']['data'][1]['id'] 

存在,

$tasks_detail['result']['data'][1]['id'] 
$tasks_detail['result']['data'][2]['id'] 
$tasks_detail['result']['data'][3]['id'] 

存在。

下一個循環,你將訪問

$tasks['result']['data'][4]['id'] 

直接而失去

$tasks['result']['data'][2]['id'] 
$tasks['result']['data'][3]['id'] 

您可能需要做這樣的事情:

while(isset($tasks['result']['data'][$i]['id'])){ 
    $tasks_detail = $client->fetch('https://app.asana.com/api/1.0/workspaces/'.$tasks['result']['data'][$i]['id'].'.json'); 
    print_r($tasks_detail); 

    if(isset($tasks_detail['result']['data'][$i]['id'])){ 
     $tasks_details = $client->fetch('https://app.asana.com/api/1.0/tasks/'.$tasks_detail['result']['data'][$i]['id'].'.json'); 
     print_r($tasks_details); 
    } 
    $i++; 
} 

請注意,當您同時使用循環結束循環。

+0

很高興我能幫助,歡呼! – kyo

相關問題