打印一系列字母

Print a sequence of letters

提问人:Maria Ivanova 提问时间:12/14/2018 最后编辑:DaveMaria Ivanova 更新时间:12/14/2018 访问量:149

问:

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

print a sequence of letters

我有这样的代码:

<?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”的东西。 想法?

php for-loop foreach while-loop 序列

评论

0赞 pew007 12/14/2018
您拥有的代码工作正常。你在问什么?
0赞 Jay Blanchard 12/14/2018
您的代码不起作用?
1赞 Don't Panic 12/14/2018
您可以使用 str_repeat 而不是 for 循环。

答:

1赞 Progrock 12/14/2018 #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
0赞 The fourth bird 12/14/2018 #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 演示

另一种选择可能是使用str_repeat

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

Php 演示

0赞 Maria Ivanova 12/14/2018 #3

其实我也找到了方法,谢谢你所有的答案!

<?php

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

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

评论

0赞 Progrock 12/14/2018
无需对 进行第二次分配。$j
0赞 Progrock 12/14/2018 #4

以下是等效的。

for within 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";

具有范围和str_repeat的 foreach:

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

输出(对于每个代码段):

a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa