存在空Curl响应时退出/中断循环


Exiting/breaking loop when there is an empty Curl response

所以我循环到surveyGizmo,检索结果。由于每个cURL响应只允许500个响应,所以我必须不断循环,直到出现空响应。因此,我的代码大致轮廓如下:

    $pageIndex = 1;
    while ($pageIndex) {
        $outputGizmo = getSurveyResponse($method = 'GET', $pageIndex);
            if ($outputGizmo == '') {
                break;
            }
        foreach($outputGizmo->data as $surveyResponse) {
            $firstName = $surveyResponse->{'[question(2)]'};
            $lastName = $surveyResponse->{'[question(10)]'};
            $email = $surveyResponse->{'[question(3)]'};
            $phone = $surveyResponse->{'[question(5)]'};
            $postcode = $surveyResponse->{'[question(6)]'};
            // Add to local database will happen here
        }

        $pageIndex += 1;

    } 

我在循环中迷路了,我只是想在getSurveyResponse函数返回空时终止while循环。我选择空是因为如果没有更多的响应,它会返回一个空白页面。

更新:

object(stdClass)#1 (6) {
 ["result_ok"]=>
bool(true)
 ["total_count"]=>
 string(1) "1"
  ["page"]=>
 string(1) "2"
 ["total_pages"]=>
int(1)
 ["results_per_page"]=>
 string(3) "100"
 ["data"]=>
 array(0) {
 }
}

当没有更多的结果可用时,您得到的实际上不是一个空字符串,而是一个数据有限的对象。由于空响应以零元素数组的形式返回$data属性,因此只需测试empty($outputGizmo->data)即可退出循环:

从您的var_dump():

["data"]=>
array(0) {
}

数组为空时中断。您的代码的其余部分看起来就像它将按原样工作。

if (empty($outputGizmo->data)) {
    break;
}