php 通过在循环中有条件地打印'x'来创建X形状

kpbwa7wx  于 2023-09-29  发布在  PHP
关注(0)|答案(3)|浏览(102)

这是我想要的输出:我无法得到这个我已经尝试了很多次,但都是徒劳的,所以这就是为什么我问

x               x  
    x           x    
      x       x      
        x   x         
          x          
        x   x        
      x       x      
    x           x    
  x               x

但我明白了

x                x  
    x            x    
      x        x      
        x    x        
          xx          
          xx          
        x    x        
      x        x      
    x            x    
  x                x  


for($i=1;$i<=5;$i++)
{
    echo  str_repeat("&nbsp;&nbsp;",$i);
    echo  "x".str_repeat("&nbsp;&nbsp;",5-$i)."". str_repeat("&nbsp;&nbsp;",5-$i)."x".str_repeat("&nbsp;&nbsp;",$i)."<br>";
}

for($i=5;$i>=1;$i--)
{

    echo  str_repeat("&nbsp;&nbsp;",$i);
    echo  "x".str_repeat("&nbsp;&nbsp;",5-$i)."". str_repeat("&nbsp;&nbsp;",5-$i)."x".str_repeat("&nbsp;&nbsp;",$i)."<br>";
}

任何人都可以帮助解决它吗?

093gszye

093gszye1#

您可以合并所有相邻的str_repeats,并进行一些算术简化。然后你需要在手臂的x之间添加一个额外的空间,并在中间写一行有一个x

for($i=1;$i<=4;$i++)
{
    echo  str_repeat("&nbsp;",2*$i)."x".str_repeat("&nbsp;",19 - 4*$i)."x<br>";
}
echo str_repeat("&nbsp;", 10) . "x<br>";
for($i=4;$i>=1;$i--)
{
    echo  str_repeat("&nbsp;",2*$i)."x".str_repeat("&nbsp;",19 - 4*$i)."x<br>";
}

在第二个x之后也不需要&nbsp;
输出量:

x               x
    x           x
      x       x
        x   x
          x
        x   x
      x       x
    x           x
  x               x
ecfsfe2w

ecfsfe2w2#

你可以在一个循环中完成,只需计算一半(例如。左),并将其镜像到另一侧(除了中心ofc)

$size = 9;
$space = "&nbsp;&nbsp;";

$center = ceil($size/2);
$maxPost = abs($center - $size);
for ($i=0; $i<$size; $i++) {
    $post = abs($center + $i - $size);
    $pre = $maxPost - $post;

    echo str_repeat($space,$pre);
    echo "x ";
    echo str_repeat($space, $post);

    if ($post > 0) {
        echo str_repeat($space, $post-1);
        echo "x ";
    }
    echo str_repeat($space, $pre) . "<br>";
}

here

x               x  
  x           x    
    x       x      
      x   x         
        x          
      x   x        
    x       x      
  x           x    
x               x
wqlqzqxt

wqlqzqxt3#

试试这个

for($i=1;$i<=5;$i++)
{
    echo  str_repeat("&nbsp;&nbsp;",$i);
    if($i==5)
    {
        echo  "x"."<br>";
    }
    else
    {
        echo  "x".str_repeat("&nbsp;&nbsp;",5-$i)."". str_repeat("&nbsp;&nbsp;",5-$i-1)."&nbsp;x".str_repeat("&nbsp;&nbsp;",$i)."<br>";
    }   
}

for($i=4;$i>=1;$i--)
{
        echo  str_repeat("&nbsp;&nbsp;",$i);
        echo  "x".str_repeat("&nbsp;&nbsp;",5-$i)."". str_repeat("&nbsp;&nbsp;",5-$i-1)."&nbsp;x".str_repeat("&nbsp;&nbsp;",$i)."<br>";
}

输出:

x               x  
    x           x    
      x       x      
        x   x        
          x
        x   x        
      x       x      
    x           x    
  x               x

相关问题