在PHP中使用多个For循环生成的星号构建的ASCII艺术金字塔中放置错误的行
这是我的代码我需要修复这个金字塔在这里你可以看到显示和代码在PHP中使用多个For循环生成的星号构建的ASCII艺术金字塔中放置错误的行,php,ascii-art,Php,Ascii Art,这是我的代码我需要修复这个金字塔在这里你可以看到显示和代码 问题是 * * *//these i want to fix * * * * * * * * * * * * * * * * $n=10; 对于($i=1;$iif($i!=1)for循环的第一个$i结束时
问题是
* * *//these i want to fix
* *
* *
* *
* *
* *
* *
* *
* *
$n=10;
对于($i=1;$iif($i!=1)
for循环的第一个$i
结束时,您有一个if($i!=1)
条件。这实际上需要移动到循环的第一个子循环
这是为什么?嗯,您的$i
for循环正在打印两个*
。但是在金字塔的顶部,您只有一个*
符号。在这种情况下,我们需要排除在这种情况下显示,但仅在这种情况下
您有两个异常的*
显示。第二个是由于$i==1
显示在$i
上的第一个for循环中之后的情况造成的,第一个是由于没有忽略*
for循环中$i
的第一个情况下的*
符号造成的。
如果($i!=1)
在$i
为1时跳过新行输出,这就是为什么第二个“行”仍在第一行上输出的原因。如果更改输出
的逻辑,它将起作用
$n = 10;
for ($i = 1; $i <= $n; $i++)
{
for ($j = 0; $j < ($n - $i); $j++) {
echo " ";
}
echo "*";
for ($j = 1; $j <= $i-1; $j++) {
echo " ";
}
for ($k = 1; $k < $i-1; $k++) {
echo " ";
}
if ($i != 1) {
echo "*";
}
echo "<br>";
}
欢迎使用SO!请仔细阅读并包括您自己尝试确定问题所采取的任何调试步骤。该页面上还有另一个链接,详细解释了如何/为什么进行调试:这可能是由于web浏览器如何折叠空白。将其呈现在
元素中以保留空白。此外,我希望哦,欢迎来到SO!让我知道我的答案是否有帮助,如果没有,什么不对。我还通过演示更新了您的问题,以便其他人可以清楚地看到问题所在。希望这有帮助!谢谢!
$n = 10;
for ($i = 1; $i <= $n; $i++)
{
for ($j = 0; $j < ($n - $i); $j++)
echo " ";
if($i!=1) {
echo "*";
}
for ($j = 1; $j <= $i-1; $j++)
echo " ";
for ($k = 1; $k < $i-1; $k++)
echo " ";
echo "*\n";
}
*
* *
* *
* *
* *
* *
* *
* *
* *
* *
$n = 10;
for ($i = 1; $i <= $n; $i++)
{
for ($j = 0; $j < ($n - $i); $j++) {
echo " ";
}
echo "*";
for ($j = 1; $j <= $i-1; $j++) {
echo " ";
}
for ($k = 1; $k < $i-1; $k++) {
echo " ";
}
if ($i != 1) {
echo "*";
}
echo "<br>";
}
*
* *
* *
* *
* *
* *
* *
* *
* *
* *