
本文介绍如何利用取模运算(%)优雅替代冗长的重复索引判断,将形如 0/10/20/30…、1/11/21/31… 的索引分组逻辑,浓缩为简洁可维护的条件结构。
在模板循环(如 Laravel Blade)中,当需要根据 $loop->index 对每组间隔为 10 的索引执行不同逻辑时(例如:0、10、20、30… 执行 A;1、11、21、31… 执行 B;依此类推),硬编码所有可能值(如 == 0 || == 10 || == 20 ...)不仅代码冗长、难以维护,还极易出错且无法扩展。
根本解法在于识别规律:这些索引在模 10 意义下余数恒定。
- 所有 0, 10, 20, 30, ... → $loop->index % 10 == 0
- 所有 1, 11, 21, 31, ... → $loop->index % 10 == 1
- …
- 所有 9, 19, 29, 39, ... → $loop->index % 10 == 9
因此,推荐使用 @switch 结构实现清晰、高效、可读性强的分支控制:
@switch($loop->index % 10)
@case(0)
{{-- 处理索引为 0, 10, 20, 30... 的场景 --}}
Header Section
@break
@case(1)
{{-- 处理索引为 1, 11, 21, 31... 的场景 --}}
Subheader Block
@break
@case(2)
{{-- 处理索引为 2, 12, 22, 32... 的场景 --}}
Feature Card
@break
@default
{{-- 其他余数(3–9)可统一处理,或按需补充 @case 分支 --}}
Default Content
@endswitch✅ 优势说明:
- 简洁性:单行 $loop->index % 10 替代数十个 || 判断;
- 可扩展性:新增分组只需增加一个 @case(N),无需修改已有逻辑;
- 健壮性:自动适配任意大小的索引(不限于 0–99),无边界遗漏风险;
- 性能友好:取模运算是底层高效操作,远优于多次整数比较。
⚠️ 注意事项:
- 确保 $loop->index 为非负整数(Blade 循环中默认满足);
- 若需兼容负索引(极少见),应先做规范化处理(如 ($loop->index % 10 + 10) % 10);
- 在高频渲染场景中,避免在 @case 内执行耗时 PHP 逻辑,建议提前计算或抽离至控制器/组件。
总结:面对周期性索引分组需求,取模运算是最自然、最符合数学直觉的工具。用 @switch($index % N) 替代重复枚举,是提升模板可维护性与专业度的关键实践。










