
本文介绍如何利用取模运算(%)优雅替代冗长的硬编码索引判断,将重复模式(如每10个索引一组)转化为简洁、可维护的条件逻辑,适用于 blade 模板或 php 循环场景。
在循环渲染(如 Laravel Blade 的 @foreach)中,若需对特定索引模式执行不同操作——例如:索引 0, 10, 20, 30... 执行 A 动作;1, 11, 21, 31... 执行 B 动作;2, 12, 22, 32... 执行 C 动作——直接罗列所有可能值(如 $loop->index == 0 || $loop->index == 10 || ...)不仅代码臃肿,更难以维护和扩展。
根本解法是识别规律:这些索引均属于同一模 10 同余类。即:
- 0 % 10 == 0, 10 % 10 == 0, 20 % 10 == 0 → 归为第 0 组
- 1 % 10 == 1, 11 % 10 == 1, 21 % 10 == 1 → 归为第 1 组
- …
- 9 % 10 == 9, 19 % 10 == 9, 29 % 10 == 9 → 归为第 9 组
因此,只需对 $loop->index 取模 10,即可用单一数值代表其所属周期位置。
✅ 推荐写法:使用 @switch(Blade 中最清晰)
@switch($loop->index % 10)
@case(0)
Section A
@break
@case(1)
Item in Group 1
@break
@case(2)
Item in Group 2
@break
@case(9)
@break
@default
Default layout
@endswitch✅ 替代写法:精简 @if 链(兼容性更强)
@if ($loop->index % 10 === 0)
@elseif ($loop->index % 10 === 1)
@elseif ($loop->index % 10 === 2)
@elseif ($loop->index % 10 === 9)
@endif⚠️ 注意事项
- 确保索引非负:% 运算在 PHP/Blade 中对非负整数行为确定;若 $loop->index 可能为负(极少见),建议先 abs() 或校验。
- 性能无损耗:取模是底层位运算优化的轻量操作,远快于多次 || 判断。
- 可扩展性强:如需改为“每 15 个一组”,仅需将 10 替换为 15,无需增删任何分支。
- 语义更明确:$loop->index % 10 直观表达了“按十进制位分组”的业务意图,大幅提升可读性。
掌握取模思维,不仅能简化索引分组,还可用于实现栅格布局(如每行 3 列)、分页高亮、交替样式(% 2)、校验码生成等常见开发场景。让代码从“能运行”走向“易理解、易维护”。









