for迴圈有三個條件,如果這三個條件彼此間無法搭配,會造成迴圈無法執行或成為無限迴圈。我們可使用以下的例子說明,for迴圈執行時會有哪些變化:
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>forerror1:for迴圈的風險 </title></head>
<body><?
$a=0;
for ($i=1;$i!=10;$i+=2)
{ echo "i->".$i."<br>";
echo "before a->".$a."<br>";
$a += $i;
echo "after a->".$a."<br>";
echo "<hr>";
}
echo $a;
?></body></html>
【圖19 迴圈設計不當造成無限迴圈,這是執行一段時間後的畫面】
請您看06行語法:
| 06: | for ($i=1;$i!=10;$i+=2) |
|---|
乍看之下,與前一個for0.php檔案相似,但是我們把這三個條件列表做說明:
| $i=1; | $i的初始值為1 |
|---|---|
| $i!=10; | 當$i不等於10的情況下 |
| $i++ | 每跑完一次迴圈$i就加1 |
我們可以來跑跑看迴圈會怎麼跑
| 1 | 當$i=1時 | $a+=$i,原本$a=0,$i=1,所以$a=1 | $i+=2,所以$i=3 |
|---|---|---|---|
| 2 | 當$i=3時 | $a+=$i,原本$a=1,$i=3,所以$a=4 | $i+=2,所以$i=5 |
| 3 | 當$i=5時 | $a+=$i,原本$a=4,$i=5,所以$a=9 | $i+=2,所以$i=7 |
| 4 | 當$i=7時 | $a+=$i,原本$a=9,$i=7,所以$a=16 | $i+=2,所以$i=9 |
| 5 | 當$i=9時 | $a+=$i,原本$a=16,$i=9,所以$a=25 | $i+=2,所以$i=11 |
| 6 | 當$i=11時 | $a+=$i,原本$a=25,$i=11,所以$a=36 | $i+=2,所以$i=13 |
您會發現到$i永遠不等於10,換句話說,永遠符合條件,所以迴圈會不斷的跑。
那以下的條件,請思考是否可以執行?:
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>forerror2:for迴圈的風險 </title></head>
<body><?
$a=0;
for ($i=11;$i<=10;$i++)
{ echo "i->".$i."<br>";
echo "before a->".$a."<br>";
$a += $i;
echo "after a->".$a."<br>";
echo "<hr>";
}
echo $a;
?></body></html>
【圖20 迴圈設計不當造成沒有執行】
請您看06行語法:
| 06: | for ($i=11;$i<=10;$i++) |
|---|
讓我們來看看這個for迴圈會如何執行:
| $i=11; | $i的初始值為11 |
|---|---|
| $i<=10; | 當$i小於等於10的情況下 |
| $i++ | 每跑完一次迴圈$i就加1 |
由於初始值就不符合條件,所以這個迴圈就沒有執行。
由以上例子可知,for迴圈的三個條件必須互相配合,否則可能一次都不會執行或者變成無限迴圈。
相關文章:







