这是我想要的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(" ",$i);
echo "x".str_repeat(" ",5-$i)."". str_repeat(" ",5-$i)."x".str_repeat(" ",$i)."<br>";
}
for($i=5;$i>=1;$i--)
{
echo str_repeat(" ",$i);
echo "x".str_repeat(" ",5-$i)."". str_repeat(" ",5-$i)."x".str_repeat(" ",$i)."<br>";
}
任何人都可以帮忙解决它?
答案 0 :(得分:2)
您可以组合彼此相邻的所有str_repeats
,并进行一些算术简化。然后你需要在手臂中的x
之间添加一个额外的空格,并在中间写一行x
。
for($i=1;$i<=4;$i++)
{
echo str_repeat(" ",2*$i)."x".str_repeat(" ",19 - 4*$i)."x<br>";
}
echo str_repeat(" ", 10) . "x<br>";
for($i=4;$i>=1;$i--)
{
echo str_repeat(" ",2*$i)."x".str_repeat(" ",19 - 4*$i)."x<br>";
}
第二个
之后也不需要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(" ",$i);
if($i==5)
{
echo "x"."<br>";
}
else
{
echo "x".str_repeat(" ",5-$i)."". str_repeat(" ",5-$i-1)." x".str_repeat(" ",$i)."<br>";
}
}
for($i=4;$i>=1;$i--)
{
echo str_repeat(" ",$i);
echo "x".str_repeat(" ",5-$i)."". str_repeat(" ",5-$i-1)." x".str_repeat(" ",$i)."<br>";
}
<强>输出:强>
x x
x x
x x
x x
x
x x
x x
x x
x x
答案 2 :(得分:0)
你可以在一个循环中完成这个,只计算一半(例如左)并将其镜像到另一侧(除了中心)
$size = 9;
$space = " ";
$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