Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中使用多个For循环生成的星号构建的ASCII艺术金字塔中放置错误的行_Php_Ascii Art - Fatal编程技术网

在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>";
}
         *
        * *
       *   *
      *     *
     *       *
    *         *
   *           *
  *             *
 *               *
*                 *