我正在查询salesforce,每个电话返回: 2000条记录 标有“完成”的布尔值 查询下一个2000条记录的下一个URL。
如果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传递给下一个函数调用,但这似乎没有实现。
答案 0 :(得分:1)
您可以使用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));