【问题标题】:I would like to repeat two sets of characters to achieve a form [closed]我想重复两组字符来实现一个表格[关闭]
【发布时间】:2013-08-26 17:04:35
【问题描述】:

我想实现这个表格:

---*---
--***--
-*****-
*******

到目前为止,我已经尝试过这样的:

    $linii = 7;

    for($i=0; $i<=$linii; $i+=2) {
        echo str_repeat("*", $i)."<br/>";
    }
?>

我真的不知道从这里去哪里。

【问题讨论】:

  • 表格?什么样的形式...
  • 首先,您的循环索引可能应该从 1 开始……其次,您可能应该自己做功课,否则您将不会学到任何东西。

标签: php repeat


【解决方案1】:

你很接近。首先,您的循环计数器需要从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 />';
}

你可以看到它在 this demo 中工作,我们在这里得到输出:

---*--- 
--***-- 
-*****- 
*******

【讨论】:

  • 非常感谢,你打开了我的思路。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-31
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 2021-07-27
相关资源
最近更新 更多