4 回答

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊
您可以使用str_repeat生成所需長度的字符串。請注意,對于三角數(shù),(1, 3, 6, 10, 15, ...)您可以將第i'th 數(shù)生成為i(i+1)/2:
$number = 5;
for ($i = 1; $i <= $number; $i++) {
echo str_repeat('*', $i * ($i + 1) /2) . str_repeat('0', $i) . PHP_EOL;
}
輸出:
*0
***00
******000
**********0000
***************00000
要更直接地生成輸出的三角形部分(即從 1 到 的數(shù)字總和i),您可以使用此代碼,它在每次迭代時(shí)將$i *s 和 1添加0到輸出中:
$line = '';
$number = 5;
for ($i = 1; $i <= $number; $i++) {
$line = str_repeat('*', $i) . $line . '0';
echo $line . PHP_EOL;
}
輸出:
*0
***00
******000
**********0000
***************00000

TA貢獻(xiàn)1880條經(jīng)驗(yàn) 獲得超4個(gè)贊
這是另一種方式,它使用替換邏輯的更直白的解讀。在這里,我通過獲取前一行并將行號(hào) amount 添加*到該*部分來形成每個(gè)后續(xù)行,然后只標(biāo)記一個(gè)新的尾隨零。
$line = "*0";
$max = 5;
$counter = 1;
do {
echo $line . "\n";
$line = preg_replace("/(\*+)/", "\\1" . str_repeat("*", ++$counter), $line) . "0";
} while ($counter <= $max);
這打?。?/p>
*0
***00
******000
**********0000
***************00000

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超4個(gè)贊
for 循環(huán)中零的個(gè)數(shù)等于 $i。所以我們只需要計(jì)算星星的數(shù)量然后簡單地做一個(gè)str_repeat
$count = 5;
for ($i=1; $i <= $count; $i++) {
$stars = 0;
for($j=1; $j <= $i; $j++) {
$stars = $stars + $j;
}
echo str_repeat('*', $stars).str_repeat('0', $i)."\n";
}
輸出:
*0
***00
******000
**********0000
***************00000

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊
$line = '';
for ($i = 1; $i <= 5; $i++) {
$line = str_repeat('*', $i) . $line . '0'; // **str_repeat()** --> getting string length
echo $line . PHP_EOL; // **PHP_EOL** ---> represents the endline character.
}
- 4 回答
- 0 關(guān)注
- 158 瀏覽
添加回答
舉報(bào)