
本文介绍一种不使用任何 `for`、`while` 等循环语句,仅借助字符串重复函数 `str_repeat()` 和逻辑排布,高效生成标准黑白相间国际象棋棋盘 html 表格的方法。
国际象棋棋盘是典型的 8×8 交替着色网格,每行由 4 组“黑-白”或“白-黑”单元格构成,且奇偶行颜色模式相反。利用这一规律,我们完全可绕过传统循环,转而采用 PHP 内置的 str_repeat() 函数进行声明式构建。
核心思路如下:
- 每行含 8 个
单元格,宽度统一为 20px,高度 40px; ";- 偶数行(第 1、3、5、7 行)以黑色起始:
重复 4 次; - 奇数行(第 2、4、6、8 行)以白色起始:
重复 4 次; - 整个棋盘共 8 行 → 将「一行黑起始 + 一行白起始」视为一个 2 行单元,重复 4 次即可。
以下是完整、可直接运行的代码实现:
"; $white = "$td'white'>"; echo str_repeat( "
" . str_repeat($black . $white, 4) . " " . "" . str_repeat($white . $black, 4) . " ", 4 ); ?>✅ 优势说明:
立即学习“PHP免费学习笔记(深入)”;
- 零循环语法,符合题目约束;
- 仅 3 行 PHP 逻辑,简洁、高效、易维护;
- str_repeat() 是原生 C 实现,性能优于解释型循环;
- 输出结构严格符合 HTML 表格规范(闭合
/ ,无拼接错误)。
⚠️ 注意事项:
- bgcolor 属性在 HTML5 中已弃用(推荐改用 CSS style="background-color:"),若需合规性升级,可将 $black 改为 "$td'black' style='background-color:black;'>
- 偶数行(第 1、3、5、7 行)以黑色起始:
- 表格总宽度 270px = 8 × 20px + 1px 左右边框(因 border="1px" 会额外增加像素),实际渲染可能略有偏差,建议改用 CSS box-sizing: border-box 或显式设置 width: 160px(纯内容宽)+ 外边框控制;
- 此方法依赖棋盘严格的周期性(2 行 × 4 组),不适用于动态尺寸或非规则着色逻辑——如需扩展性,仍应优先考虑循环或函数式递归。
综上,str_repeat() 不仅是替代循环的巧妙技巧,更是函数式思维在 PHP 中的一次轻量实践:用数据模式代替控制流,让代码更接近“所见即所得”的声明本质。











