[英]call function in function until condition is met
我正在查詢salesforce,並且每個調用都返回:2000在下一個URL中記錄一個標記為“ done”的布爾值,以查詢下一條2000記錄。
如果done為假,則需要對下一個URL進行下一次調用,並獲取下2000條記錄,檢查是否完成,並根據需要重復。
$accounts = array();
function listAccounts($data,$accounts){
$ch = curl_init();
//curl options
$result = curl_exec($ch);
curl_close($ch);
$res = json_decode($result);
foreach ($res->records as $k => $v){
$accounts[] = $v->Name;
}
if ($res->done !== true){
$data['listAccounts'] = $res->nextRecordsUrl;
listAccounts($data,$accounts);
}
return $accounts;
}
print_r(listAccounts($data,$accounts));
上面的方法只返回第一個2000。我希望它重復listAccounts函數,直到$ res-> done!== true。 如果我在函數中回顯$ v-> name,它將打印出我期望的所有5,000多個記錄。 我知道我需要將$ accounts var傳遞給下一個函數調用,但這似乎沒有實現。
您可以pass by reference
function listAccounts($data,&$accounts);
您的密碼
$accounts = array();
function listAccounts($data,&$accounts){
$ch = curl_init();
//curl options
$result = curl_exec($ch);
curl_close($ch);
$res = json_decode($result);
foreach ($res->records as $k => $v){
$accounts[] = $v->Name;
}
if ($res->done !== true){
$data['listAccounts'] = $res->nextRecordsUrl;
listAccounts($data,$accounts);
}
return $accounts;
}
print_r(listAccounts($data,$accounts));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.