PHP迴圈
迴圈
電腦每秒鐘可執行幾億次的指令,擁有強大的計算能力,程式中迴圈結構可以重複執行某個程式區塊許多次,如此才能善用電腦的計算能力。迴圈結構利用指定迴圈變數的初始條件、迴圈變數的終止條件與迴圈變數的增減值來控制迴圈執行次數。
許多問題的解決都涉及迴圈結構的使用,例如:加總、排序、找最大值…等,善用迴圈結構才能有效利用電腦的運算能力與簡化程式碼。假設要撰寫程式產生1000個「Hello」,若不使用迴圈結構需寫1000個「echo “Hello<br>”」,如下。
echo "Hello<br>";
echo "Hello<br>";
echo "Hello<br>";
...
echo "Hello<br>";
要寫1000個「echo “Hello<br>”」
使用迴圈結構可以簡化程式碼達成相同功能,如下。
4-1 for迴圈
for迴圈結構通常用於已知重複次數的程式,迴圈結構中指定迴圈變數的初始值、終止值與遞增(減)值,迴圈變數將由初始值變化到終止值,每次依照遞增(減)的值進行數值增加或減少。
程式語法
for(int $迴圈變數 = 起始值; 終止值; 遞增減值){
重覆的程式
}
程式範例(印出1000個Hello)
for($i=0;$i<1000;$i++){
echo "Hello<br>";
}
範例一:使用for迴圈印出1到999的每個數字
範例二:使用for迴圈加總1到999
執行結果
499500
舉例說明
加總使用$sum=$sum+$i原理,如下表,在PHP語言中等號右邊($sum+$i)的算式會先計算,結果回存到等號左邊($sum)。
4-2 while迴圈
while迴圈結構與for迴圈結構十分類似,while迴圈結構常用於不固定次數的迴圈,由迴圈中測試條件是否成立,決定是否跳出迴圈,測試條件為真時繼續迴圈,當測試條件為假時結束迴圈。
例如:猜數字遊戲,兩人(A與B)玩猜數字遊戲,一人(A)心中想一個數,另一人(B)去猜,A就B所猜數字回答「猜大一點」、「猜小一點」或「猜中了」,直到B猜到A所想數字,這樣的猜測就屬於不固定次數的迴圈,適合使用while較不適合使用for。
程式語法
$迴圈變數=初始值;
while(迴圈變數的終止條件){
迴圈程式;
迴圈變數遞增或遞減;
}
範例一:使用while迴圈印出1到999的每個數字
範例二:使用while迴圈加總1到999
執行結果
499500
前測式迴圈與後測式迴圈結構
while迴圈結構有兩種分成前測式迴圈與後測式迴圈,前測式迴圈是指先測試迴圈變數是否符合迴圈終止條件,後測式迴圈是指先執行迴圈一次再測試迴圈變數是否符合迴圈終止條件,兩者的差異在於後測式迴圈至少執行一次。
要使用哪一種結構是看程式功能需求,如帳號密碼登入功能至少要讓使用者輸入一次帳號密碼,再確認帳號密碼是否正確,就可以使用後測式迴圈結構。前測式與後測式迴圈結構比較如下。
$迴圈變數=初始值;
do{
迴圈程式
迴圈變數遞增遞減
}while(迴圈變數的終止條件)
範例一:使用do-while迴圈印出1到999的每個數字
4-3巢狀迴圈
巢狀迴圈為迴圈範圍內又有迴圈,巢狀迴圈可以有好幾層,從外層迴圈來看,內層迴圈只是外層迴圈內的動作,因此外層迴圈作用一次,內層迴圈運作到執行結束為止。
範例一:九九乘法表
範例二:印星號
*
**
***
****
*****
******
4-4 迴圈結構特殊指令的使用—break與continue
迴圈於特殊需求下可以使用break與continue指令,當要跳出迴圈時可以使用break跳出迴圈;當要跳過迴圈內之後的程式碼,迴圈變數值直接遞增(減),繼續迴圈的執行,使用continue,也就是跳過後繼續執行迴圈程式。
針對不同的迴圈結構進行break,以下範例,當i等於3時,使用break跳出迴圈。
迴圈for--使用break
執行結果
1
2
3
迴圈while--使用break
執行結果
1
2
3
針對不同的迴圈結構使用continue,如下。
迴圈for--使用continue
執行結果
1
2
4
5
迴圈while--使用continue
執行結果
1
2
4
5