我试图只从Asana API发送5次调用来获取任务。这是我的代码
$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 :(得分: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++;
}
使用while循环时请小心结束循环。