Распечатать последовательность букв - PullRequest
0 голосов
/ 13 декабря 2018

Как мне распечатать последовательность букв с помощью PHP, не используя 'for'?Это должно быть что-то вроде этого:

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++;
}
?>

Но я ненужно «для», может быть что-то с «пока», «если» или «foreach».Идеи?

Ответы [ 4 ]

0 голосов
/ 14 декабря 2018

Следующие значения эквивалентны.

для в течение для:

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

для и 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";

Вывод (для каждого из фрагментов):

a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
0 голосов
/ 13 декабря 2018

Одним из вариантов может быть использование второго цикла 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 демо

0 голосов
/ 13 декабря 2018

На самом деле я тоже нашел способ, спасибо за все ответы!

<?php

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

И это легко понять, если вы новичок в мире программирования.

0 голосов
/ 13 декабря 2018
<?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
...