
本文介绍如何在 php 中生成一个指定行列数的二维数组,使其中所有元素按自然数顺序从 1 开始逐行、从左到右连续递增填充。
要实现「每行延续上一行末尾数值」的二维数组(如 4 行 × 10 列,共 40 个元素,值为 1–40 按行填充),关键在于避免重复复用同一子数组引用,并使用全局计数器控制数值递增。
你原始代码的问题在于:
- 先构建了一个 $row = [1,2,...,10],然后在外部循环中反复 array_push($grid, $row);
- 这导致 $grid 中所有行都指向同一个数组副本(或浅拷贝),且未更新数值逻辑 —— 因此每行都是 [1..10],而非 [1..10], [11..20], [21..30], [31..40]。
✅ 正确做法是:嵌套循环 + 独立行构造 + 全局累加器。外层控制行数,内层填充该行各列,并持续更新当前数值:
? 输出结果将严格符合预期:
立即学习“PHP免费学习笔记(深入)”;
- 第 0 行:[1, 2, ..., 10]
- 第 1 行:[11, 12, ..., 20]
- 第 2 行:[21, 22, ..., 30]
- 第 3 行:[31, 32, ..., 40]
? 进阶提示:
- 若需更灵活的起始值(如从 0 或 100 开始),只需修改 $currentValue 初始值;
- 若行列数来自用户输入或配置,请务必校验其为正整数,防止空循环或负索引错误;
- 在 Twig 模板(如 view.html)中可直接遍历渲染:
{% for rowIndex, row in grid %}{% for colIndex, cell in row %}{% endfor %}{{ cell }}{% endfor %}
✅ 总结:二维数组的「连续计数」本质是线性序列的二维切片,核心在于解耦行构造过程,并用单一递增变量贯穿全部元素 —— 不依赖索引计算(如 $i * $columnCount + $j + 1),逻辑更直观、不易出错。











