如果某一段程式要重複執行100次,難道我們就把此段程式碼打100次嗎? 這時候,心想如果有個方法能叫電腦自己自動執行100次,然後自己去喝茶休息,多美好。而這個方法就稱為"迴圈"。
1. for迴圈
for迴圈是一最簡單的迴圈使用,它提供以計數器的方式來控制迴圈。for迴圈的運作過程中,會使用某一變數作為存放迴圈執行的次數,透過設定的迴圈變數初始值、圈條件判斷、與變數數值的增減量,來控制迴圈要執行的次數,其中迴圈條件判斷及變數固定數值增加或減少,使用的格式和流程圖如下:
格式
<?php for(迴圈起始值;迴圈判斷條件;數值增減量){ PHP程式碼; } ?>
流程圖
計算從1累加到100的總和,使用for迴圈寫出程式
- 計算初始值(1)
- 結束值 (100)
- 數值遞增值 (1)
- 累加總和 (sum)
<?php $sum = 0; for($i=1;$i<=100;$i++){ $sum+=$i; } echo "for迴圈<br>數字1累加到100結果為".$sum; ?>
執行結果:
for迴圈
數字1累加到100結果為5050
2. while迴圈
While迴圈是一種判斷條件成立才進行迴圈使用的方法,與for迴圈的差別在於其語法中並無初始值與增減量的設定,通常while迴圈會在其程式碼內才做會影響條件判斷的指令。使用方法如下:
格式
<?php while(迴圈判斷條件){ PHP程式碼; } ?>
流程圖
以while迴圈,從1累加到100的程式碼
<?php $sum=0;$i=1; while($i<=100){ $sum+=$i; $i++; } echo "while迴圈<br>數字1累加到100結果為".$sum; ?>
執行結果:
while迴圈
數字1累加到100結果為5050
3. do while迴圈
do while迴圈與while迴圈相似,差別在於do while迴圈不管事件是否成立,都會先執行一次所指定的程式碼,之後再進行判斷決定是否要繼續執行迴圈,使用方法如下說明:
格式
<?php do{ PHP程式碼; }(迴圈判斷條件); ?>
流程圖
程式範例
<?php $i=1; do{ echo "do while迴圈執行第".$i."次<br>"; $i++; }while($i>3); ?>
執行結果:
do while迴圈執行第1次
4. 巢狀迴圈
巢狀迴圈即是一個迴圈內有一個至多個迴圈在裡面,主要用於在多種狀況下且需要再做另外多種情況下的判斷及運算。比如,while迴圈內有一個for迴圈,這即是一種巢狀圈。
程式範例
<?php $i=1; while($i<=2) { for($j=1;$j<=3;$j++) { echo "while迴圈第".$i."次,for迴圈第".$j."次<br>"; } $i++; } ?>
執行結果:
while迴圈第1次,for迴圈第1次
while迴圈第1次,for迴圈第2次
while迴圈第1次,for迴圈第3次
while迴圈第2次,for迴圈第1次
while迴圈第2次,for迴圈第2次
while迴圈第2次,for迴圈第3次
5. break 與 continue
break即是在迴圈的執行過程中,強制中斷回圈內執行的程式碼,此方法通常會配合條件判斷來使用。
程式範例
<?php $i=1; while($i<=99) { echo "while迴圈執行第".$i."次<br>"; if($i == 3) { echo "while迴圈break跳出"; break; } $i++; } ?>
執行結果
while迴圈執行第1次
while迴圈執行第2次
while迴圈執行第3次
while迴圈break跳出
continue是可以讓迴圈略過此階段過程,直接執行下一階段迴圈。
程式範例
<?php for($i=1;$i<=10;$i++) { if($i<7) { continue; } echo "while迴圈執行第".$i."次<br>"; } ?>
執行結果
while迴圈執行第7次
while迴圈執行第8次
while迴圈執行第9次
while迴圈執行第10次