【问题标题】:Print a sequence of letters打印一系列字母
【发布时间】:2019-05-15 01:19:01
【问题描述】:

如何在不使用“for”的情况下使用 PHP 打印一系列字母?它需要是这样的:

我有这样的代码:

<?php

$a = 'a';
$n = 50;
$i = 0;
$k = 0;

while ( $i < $n ) {
    echo $a." ".'<p></p>';
    for ($k =0; $k<=$i; $k++) { 
        echo $a." ";
    }
    $i++;
}
?>

但我不需要'for',也许是'while'、'if'或'foreach'。 想法?

【问题讨论】:

  • 您的代码运行良好。你在问什么?
  • 您的代码不起作用?
  • 您可以使用 str_repeat 代替 for 循环。

标签: php for-loop foreach while-loop sequence


【解决方案1】:
<?php

print
implode(
    "\n",
    array_map(
        function($n) {
            return str_repeat('a', $n);
        },
        range(1,10)
    )
);

输出:

a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa

【讨论】:

    【解决方案2】:

    一种选择是使用第二个 while 循环:

    $a = 'a';
    $n = 50;
    $i = 0;
    
    while ($i < $n) {
        $k = -1;
        $str = "";
        while ($k < $i) {
            $str .= " $a";
            $k++;
        }
        echo "$str<br>";
        $i++;
    }
    

    Php demo

    另一种选择是使用str_repeat

    while ( $i < $n ) echo str_repeat($a, ++$i) . "<br>";
    

    Php demo

    【讨论】:

      【解决方案3】:

      其实我也找到了方法,谢谢大家的回答!

      <?php
      
      $i=0; 
      $j=50; 
      while($i < $j ) {
          $j=50; 
          $k=0;
          while($k <= $i){
              echo 'a';
              ++$k;
          }
          echo "<p></p>";
          $i++;
      }
      

      如果您是编码世界的新手,这很容易理解。

      【讨论】:

      • 不需要第二次分配给$j
      【解决方案4】:

      以下是等价的。

      for 内为:

      <?php
      for($i=1, $n=10; $i<=$n; $i++) {
          for($j=1; $j<=$i; $j++) {
              echo 'a';
          }
          echo "\n";
      }
      

      for 和 str_repeat:

      <?php
      for($i=1, $n=10; $i<=$n; $i++)
          echo str_repeat('a', $i), "\n";
      

      foreach 有一个范围和 str_repeat:

      <?php
      foreach(range(1, 10) as $n)
          echo str_repeat('a', $n), "\n";
      

      输出(对于每个 sn-ps):

      a
      aa
      aaa
      aaaa
      aaaaa
      aaaaaa
      aaaaaaa
      aaaaaaaa
      aaaaaaaaa
      aaaaaaaaaa
      

      【讨论】:

        猜你喜欢
        • 2019-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-06
        • 2011-08-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多