你很亲密。首先,您的循环计数器需要从 , 开始1
打印一颗星。从那时起,将其$i
视为要在当前行上打印的星数(然后将其增加 2,这很好)。
然后,您只需要计算一下在打印每组星星之前(和之后)要打印多少个破折号。这是一个简单的计算:我们知道一行最多可以有 7 个字符,并且我们知道当前行有多少颗星,所以我们这样做:
dashes_for_this_line = max_chars_per_line - num_stars_on_this_line;
但是,我们需要在星星的一侧打印一半,在另一侧打印一半,所以我们将该数字除以 2。
这在 PHP 中看起来像(注意我已经更改了变量名以使其更具可读性):
$max_chars = 7;
for($num_stars = 1; $num_stars <= $max_chars; $num_stars += 2) {
$dashes = ($max_chars - $num_stars) / 2;
echo str_repeat('-', $dashes); // Print L dashes
echo str_repeat('*', $num_stars); // Print starts
echo str_repeat('-', $dashes); // Print R dashes
echo '<br />';
}
你可以在这个演示中看到它的工作,我们得到输出:
---*---
--***--
-*****-
*******