
本文讲解如何使用 php 的双重 for 循环生成空心矩形图案,通过条件判断控制边界输出星号、内部输出空格,避免在循环中直接删除元素的常见误区。
本文讲解如何使用 php 的双重 for 循环生成空心矩形图案,通过条件判断控制边界输出星号、内部输出空格,避免在循环中直接删除元素的常见误区。
在 PHP 中,“在 for 循环中移除元素”并不是本例的目标——用户实际想实现的是:打印一个 11×11 的空心矩形(首尾行为全 *,左右列为 *,中间区域为空格),而非动态修改数组或字符串。因此,关键不在于“删除”,而在于按位置逻辑选择输出内容。
核心思路:用条件判断替代“删除”
外层循环 $i 控制行号(0 到 10,共 11 行),内层循环 $j 控制列号(0 到 10,共 11 列)。只需判断当前坐标 (i, j) 是否位于矩形边界:
- 顶部行($i == 0)或 底部行($i == 10)→ 输出 *
- 左侧列($j == 0)或 右侧列($j == 10)→ 输出 *
- 其余位置 → 输出空格 ' '
推荐写法(清晰可维护)
<?php for ($i = 0; $i <= 10; $i++) {
for ($j = 0; $j <= 10; $j++) {
if ($i == 0 || $i == 10) {
echo '*';
} else {
if ($j == 0 || $j == 10) {
echo '*';
} else {
echo ' ';
}
}
}
echo '<br />';
}
?>
简洁写法(三元运算符)
<?php for ($i = 0; $i <= 10; $i++) {
for ($j = 0; $j <= 10; $j++) {
echo ($i == 0 || $i == 10 || $j == 0 || $j == 10) ? '*' : ' ';
}
echo '<br />';
}
?>
注意事项
- ❌ 原代码中存在逻辑错误:第二个 for 循环误用 $i 作内层变量(覆盖外层 $i),导致无限循环或异常行为;
- ✅ 行/列索引从 0 开始,
- ✅ HTML 中
必须在每行内层循环结束后输出,否则无法换行; - ? 此方法适用于任意尺寸矩形:将 10 替换为 N-1 即可生成 N×N 空心方阵。
掌握这种基于坐标的条件渲染思想,是构建图形化输出、游戏地图、ASCII 艺术等场景的基础能力。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











