PHP如何针对多个数值范围执行FOR循环实现API分页拉取数据
实现方案
方案1:完全贴合你预期的双数组写法
直接用foreach遍历批次对应的起止值数组,实现你想要的逻辑:
// 定义每批的起始偏移和结束值 $startOffsets = [0, 20, 40, 60, 80]; $endOffsets = [20, 40, 60, 80, 100]; // 按批次遍历处理 foreach ($startOffsets as $batchIndex => $start) { $end = $endOffsets[$batchIndex]; // 单批次内的数值遍历 for ($i = $start; $i < $end; $i++) { echo "The number is: $i <br>"; } // 此处可插入当前批次20条数据存入MySQL的逻辑 }
方案2:更灵活的动态计算写法
不需要提前写死起止数组,后续总数据量变化也不用调整数组内容,适配性更强:
$totalRows = 100; // 总数据量,可后续改为从API接口动态获取总条数 $perBatch = 20; // API单请求返回的最大条数 $batchCount = ceil($totalRows / $perBatch); // 计算总批次 for ($batch = 0; $batch < $batchCount; $batch++) { $start = $batch * $perBatch; $end = min(($batch + 1) * $perBatch, $totalRows); // 兼容最后一批不足20条的情况 $currentBatch = []; for ($i = $start; $i < $end; $i++) { echo "The number is: $i <br>"; // 此处可存入当前行数据到批次数组 } // 批量写入当前批次20条数据到MySQL }
实际调用API的优化提示
真实业务场景不需要逐行循环拉取,直接将每批的
offset = $start、limit = 20作为请求参数传给API,就能一次性拿到当前批次的20条数据,处理完再执行下一批请求即可,性能会大幅提升。
内容的提问来源于stack exchange,提问作者God of data
相关产品推荐
相关产品推荐

