4 回答

TA貢獻1807條經驗 獲得超9個贊
您可以使用str_repeat生成所需長度的字符串。請注意,對于三角數,(1, 3, 6, 10, 15, ...)您可以將第i'th 數生成為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 到 的數字總和i),您可以使用此代碼,它在每次迭代時將$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貢獻1880條經驗 獲得超4個贊
這是另一種方式,它使用替換邏輯的更直白的解讀。在這里,我通過獲取前一行并將行號 amount 添加*到該*部分來形成每個后續行,然后只標記一個新的尾隨零。
$line = "*0";
$max = 5;
$counter = 1;
do {
echo $line . "\n";
$line = preg_replace("/(\*+)/", "\\1" . str_repeat("*", ++$counter), $line) . "0";
} while ($counter <= $max);
這打印:
*0
***00
******000
**********0000
***************00000

TA貢獻1825條經驗 獲得超4個贊
for 循環中零的個數等于 $i。所以我們只需要計算星星的數量然后簡單地做一個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貢獻1943條經驗 獲得超7個贊
$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 關注
- 163 瀏覽
添加回答
舉報