提问人:Maria Ivanova 提问时间:12/14/2018 最后编辑:DaveMaria Ivanova 更新时间:12/14/2018 访问量:149
打印一系列字母
Print a sequence of letters
问:
如何在不使用“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”的东西。 想法?
答:
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++;
}
另一种选择可能是使用str_repeat
while ( $i < $n ) echo str_repeat($a, ++$i) . "<br>";
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
评论