写了个热乎乎的死循环:
起初是调用接口拿数据,但是接口查询条数有限制,限制每次只能查$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;
}