本文详解如何使用 php 的 while 循环结合取模运算,精准控制每行输出 3 个或 4 个数字(交替为“3列→4列→3列→4列”),生成指定格式的网格化数字列表。
要实现如下目标输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
关键在于:每行元素数量按 3 → 4 → 3 → 4 循环变化,共 14 个数字(1 到 14)。这并非简单的“每 3 或每 4 换行”,而是基于当前数字位置决定该数是否为某行的末尾——即需判断「第几个数字」应触发换行。
✅ 正确思路:用序号对周期取模判定换行点
观察目标结构中各数字后是否换行:
| $i | 输出后是否换行 | 理由 |
|---|---|---|
| 3 | 是 | 第 1 行末(3 个) |
| 7 | 是 | 第 2 行末(+4 = 7) |
| 10 | 是 | 第 3 行末(+3 = 10) |
| 14 | 是 | 第 4 行末(+4 = 14) |
可见换行位置为:$i = 3, 7, 10, 14。这些数满足一个规律:
? 当 $i % 7 == 0 或 $i % 7 == 3 时换行(因为 7 是 3+4 的周期长度;3 是第一段长度)。
? 验证:3 % 7 = 3 → 换行 ✅7 % 7 = 0 → 换行 ✅10 % 7 = 3 → 换行 ✅14 % 7 = 0 → 换行 ✅
因此,可使用 while 循环 + 取模条件精准控制:
立即学习“PHP免费学习笔记(深入)”;