循环中获取最后n组数字,为每行4元素的末行元素加类
通用实现:获取循环中最后一行的元素序号
嘿,我太懂你现在的困扰了——写一大堆switch case来逐个判断总数量对应的末行元素,不仅代码冗余,还没法覆盖所有可能的$count值对吧?咱们直接搞个通用的计算逻辑,一次性解决这个问题!
核心思路
咱们先理清楚规律:每行固定4个元素,最后一行的元素序号其实是从「前面完整行之后的第一个序号」开始,到总数量$count结束。具体计算步骤如下:
- 计算前面有多少完整的行:用
($count - 1) // 4(整数除法,自动去掉余数),得到的是从0开始计数的完整行数。 - 算出最后一行的起始序号:
完整行数 * 4 + 1 - 用起始序号到$count生成连续数组,就是最后一行的所有元素序号
代码实现(PHP)
$count = 7; // 替换成你的总元素数量 $perRow = 4; // 每行元素数,以后要改行数直接改这里 // 计算最后一行的起始序号 $start = ((int)(($count - 1) / $perRow)) * $perRow + 1; // 生成最后一行的元素序号数组 $items = range($start, $count); // 验证输出(可选) print_r($items);
验证几个场景
咱们拿你原来的case测试一下:
- 当$count=8时,输出
[5,6,7,8],和你原来的case一致 - 当$count=5时,输出
[5],正确 - 当$count=11时,输出
[9,10,11],正确 - 当$count=13时,输出
[13],正确
额外优势
这个方法完全通用:
- 不管$count是多大的数字,都能正确计算
- 如果以后要改成每行5个、6个元素,只需要修改
$perRow的值就行,不用动逻辑代码
内容的提问来源于stack exchange,提问作者Amin Abdolrezapoor
相关产品推荐
相关产品推荐

