呀,写了个死循环

写了个热乎乎的死循环:
起初是调用接口拿数据,但是接口查询条数有限制,限制每次只能查$pageSize条。

function MyInfiniteLoop(array $searchKeyArr) {
    $pageNo = 1;
    $pageSize = 10;
    $batchNum = (int)ceil(count($searchKeyArr)/$pageSize);
    $list = [];

    do {
        $curKeyArr = array_slice($searchKeyArr, $pageNo, $pageSize);
        $curRes = test($curKeyArr);//test是某个查询接口
        if (!empty($curRes)) {
            $list = array_merge($list, $curRes);
        }
    } while ($pageNo++ !=  $batchNum);

    return $list;
}

这里有个问题,如果$searchKeyArr是空数组,那么计算出来的$batchNum=0,而$pageNo从1开始不断累加,这样$pageNum永远不可能等于$batchNum,造成了死循环。好低级的错误呀。修改如下:

function MySolution(array $searchKeyArr) {
    $pageNo = 1;
    $pageSize = 10;
    $batchNum = (int)ceil(count($searchKeyArr)/$pageSize);
    $list = [];

    if ($pageNo <= $batchNum) {
        for ($pageNo; $pageNo <= $batchNum; $pageNo++) {
            $curKeyArr = array_slice($searchKeyArr, $pageNo, $pageSize);
            $curRes = test($curKeyArr);//test是某个查询接口
            if (!empty($curRes)) {
                $list = array_merge($list, $curRes);
            }
        }
    }

    return $list;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值