这是我想要的输出: 我无法得到这个我已经尝试了很多次但都是徒劳,所以这就是我问的原因
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>";
}
谁能帮忙解决一下吗?
您可以组合所有彼此相邻的
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
您可以在一个循环中执行此操作,只需计算一半(例如左侧)并将其镜像到另一侧(除了 c 的中心)
$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>";
}
查看这里:
x x
x x
x x
x x
x
x x
x x
x x
x x
试试这个
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