各位大大,這是一個用*輸出倒直角三角形的例子,這兩個for迴圈我不是很白,特別是裡面的那個,能解釋下麼,謝謝啦~
for($i=1;$i<15;$i++){ for($j=$i;$j<15;$j++){ echo "*"; } echo "
"; }
回複討論(解決方案)
為什麼還要有個變數$j去等於外層的變數$i,再次迴圈一遍呢?
你首先理解下單個發for迴圈含義!如果裡面不再做一次迴圈就不會出現3角了,而是豎著的14個*
$j = $i;//是讓內層迴圈的起始值等於外層的值//每次都少輸出一個*//外層第一次迴圈,內層輸出14個*//外層第二次迴圈,內層輸出13個*//以此類推只到迴圈結束
$j = $i;
關於這兩個變數,我這樣說看你能不能理解。
$i代表的是行數,即第一次迴圈代表第一行,依次類推,一共十五行。
$j代表的是列數,即每一行有多少列。
把代碼稍改動下,輸出一個矩形,協助你理解。改動的地兒:$j=1。
"; }?>
理解for迴圈
其實可以輸出四種直角三角形
$i 可以看做是行, $j可以看做是列
首先看 $i =1;的時候$j =1; j<15,也就是裡面的for會迴圈14次,第一行就會出現14個*,然后里面的for結束開始 $i=2;的迴圈
然後看 $i =2;的時候$j=2;j<15,裡面的for會迴圈13次,出現13個*,後,開始執行$i=3;
…………
一次迴圈,最後得到第一行14個*,共14行,最後一行一個*,不知是否清楚.
多練練九九乘法表的輸出和菱形的輸出
這個我都能理解唉,i=1的時候 第二個for迴圈1<15 是不是迴圈14個星 i=2的時候 迴圈13 以此類推
$i控制執行的行數。
$j控制每一行輸出的*數。
很好理解啊。
因為從第一行開始,你的星號個數就要遞減,知道了規律,你再結合代碼就容易理解了。其實代碼還可以這樣寫。
for($i=1;$i<15;$i++){ for($j=0;$j<15-$i;$j++){ echo "*"; } echo "
"; }