我可以得到我想要的输出

时间:2014-05-23 11:02:13

标签: php

这是我想要的Out put: 我无法得到这个,我已经多次尝试但是徒劳无功,这就是为什么我要问

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

任何人都可以帮忙解决它?

3 个答案:

答案 0 :(得分:2)

您可以组合彼此相邻的所有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>";
}

第二个&nbsp;之后也不需要x

输出:

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

答案 1 :(得分:0)

试试这个

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 

答案 2 :(得分:0)

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

$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