如何基于数据库用户总数生成无重叠增量数字区间
实现方案
问题根源
原有代码的两个核心问题:
range(0, 100, 20)生成的序列包含端点100,遍历到100时计算终点为100+20=120,超出总用户数上限- 下一个区间的起点和上一个区间的终点完全一致,导致端点重叠
可用实现代码
<?php // 可自定义配置 $totalUsers = 100; // 总用户数 $step = 20; // 区间步长 $currentStart = 0; while ($currentStart <= $totalUsers) { // 终点取计算值和总用户数的较小值,避免超出上限 $currentEnd = min($currentStart + $step, $totalUsers); $rangeText = "{$currentStart}-{$currentEnd}"; echo "<button>{$rangeText}</button>"; // 下一个区间起点+1,避免端点重叠 $currentStart = $currentEnd + 1; } ?>
运行后输出的区间完全符合预期:0-20、21-40、41-60、61-80、81-100。
逻辑说明
- 用while循环替代固定range遍历,可灵活适配任意总用户数和步长配置
- 每次计算终点时通过
min()函数限制最大值不超过总用户数,不会出现超出上限的问题 - 区间起点每次在上一个终点基础上+1,彻底解决端点重叠问题
- 如果总用户数不能被步长整除,最后一个区间会自动适配收尾,比如总用户数为108时,最后一个区间为
101-108
内容的提问来源于stack exchange,提问作者The concise
相关产品推荐
相关产品推荐

