簡體   English   中英

在函數中調用函數直到滿足條件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM