PHP 中四種迴圈,分別是 while 迴圈 (while loop) 、 do-while 迴圈 (do-while loop) 、 for 迴圈 (for loop) 及 foreach-as 迴圈 (foreach loop) 。我們先來看看 while 迴圈的寫法
$i = 10; // 設定控制變數 while ($i > 0) { // 迴圈工作區 echo $i; $i--; // 調整控制變數值 }
這個迴圈所進行的工作很簡單,先在命令列上印出 10 ,然後一路倒數到 1 為止。迴圈有三個地方要注意
- 設定控制變數
- 條件
- 調整控制變數值
while 迴圈的控制變數 (control variable) 必須在 while 之前就先設定好,此例中將控制變數 $i 設定為 10 。然後進入 while 的地方,條件 (condition) 就在 while 之後的小括弧中,此例中為當控制變數 $i 大於 0 時,迴圈便會重複執行。迴圈工作區,也就是 while 底下用大括弧圍住的程式區塊,這裡,我們只有簡單的印出控制變數 $i 的值,迴圈工作區的最後需要有調整控制變數值的地方。
我們先寫成完整的範例,來執行看看結果吧!
<?php echo "\n"; $i = 10; // 設定控制變數 while ($i > 0) { // 迴圈工作區 echo $i."\n"; $i--; // 調整控制變數值 } echo "\n"; /* 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:whiledemo.php 功能:示範 PHP 程式 作者:張凱慶 時間:西元 2012 年 11 月 */ ?>
執行結果如下
當我們明確知道重複次數的時候,我們得利用控制變數來記錄 while 迴圈所進行次數,這樣 while 迴圈才會有結束的一天,不然若是三個與控制變數相關的部份,漏了任一部份時,就有可能導致無窮迴圈 (infinite loop) 的發生,例如
$i = 10; // 設定控制變數 while ($i > 0) { // 迴圈工作區 echo $i; // 沒有調整控制變數值 }
這樣一來,控制變數 $i 永遠大於 0 ,所以迴圈會一直重複執行,此例中會不斷的在命令列印出 10 ,直到強制結束程式的執行為止。
以上的 while 迴圈是介紹有明確重複次數的用法,若是迴圈沒有明確重複次數,那就得另行設計結束迴圈的方式,例如控制變數等於某一個值之時,再利用 break 跳出迴圈。
do-while 迴圈可視為 while 迴圈的顛倒,先 do 才做 while 的條件測試。
另外一個 for 迴圈則是把控制變數的設定、迴圈結束條件、控制變數的調整全都寫在小括弧之中,如下
for ($i = 10; $i > 0; $i--) { echo $i."\n"; }
for 之後的小括弧用兩個分號區隔三個項目,依序是控制變數的設定、迴圈結束條件、控制變數的調整。這個 for 迴圈與上面的 while 迴圈功能完全相同,寫成完整的範例程式,如下
<?php echo "\n"; for ($i = 10; $i > 0; $i--) { echo $i."\n"; } echo "\n"; /* 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:fordemo.php 功能:示範 PHP 程式 作者:張凱慶 時間:西元 2012 年 11 月 */ ?>
執行結果如下
小括中的兩個分號與條件是必須的,因此如果寫成
$i = 1; for (; $i > 0;) { echo $i."\n"; }
這會使 for 迴圈變成一個無窮迴圈。
foreach-as 迴圈可視為 for 迴圈的變形,用於可儲存多個數值的物件。
習慣上, for 迴圈通常用於具有明確重複次數的迴圈,因為全部的控制機制都放在 for 之後的小括弧中, while 迴圈用於沒有明確重複次數的迴圈,例如接收使用者輸入的迴圈,當使用者輸入結束指令的時候,迴圈才會結束,不然程式會一直等待使用者的輸入。
但是提醒一點, for 迴圈可以用 while 迴圈替代,反之亦然,自己偏好哪一種也就可以用哪一種囉!
接下來我們繼續看到另一種重複使用程式碼的方式,也就是函數。
中英文術語對照 | |
---|---|
程式 | program |
迴圈 | loop |
程式區塊 | block |
while 迴圈 | while loop |
do-while 迴圈 | do-while loop |
for 迴圈 | for loop |
foreach 迴圈 | foreach loop |
控制變數 | control variable |
條件 | condition |
無窮迴圈 | infinite loop |
您可以繼續參考
基礎篇
相關目錄
回 PHP 入門指南
回 PHP 教材
回首頁
參考資料
http://www.php.net/manual/en/control-structures.while.php
http://www.php.net/manual/en/control-structures.do.while.php
http://www.php.net/manual/en/control-structures.for.php
http://www.php.net/manual/en/control-structures.foreach.php
沒有留言:
張貼留言