迴圈在程式語言中是一種重覆結構的流程控制,用來處理需要大量重覆執行的工作,而迴圈中又可以套迴圈,叫做巢狀迴圈,也可以加入判斷式來增加迴圈的可用性,以下以印星星這個常出現的練習題來做迴圈的練習與說明.
(一)for迴圈結構與遞增關係
for迴圈在大多數的狀況下是以定量的方式來重覆執行一項工作,定量的意思就是有一定的執行次數,因此在FOR迴圈的結構上,會需要一個起始值,一個執行條件,和一個遞增條件:像這樣
FOR( 起始值 ; 執行條件 ; 遞增條件 ){
要執行的工作
};
起始值可以是任意值,也可以直接放運算式來產生一個起始值;
執行條件可以不只一個執行條件,但重點在於必須是一個可以讓迴圈結束的條件,不然會變成無窮迴圈就麻煩了.
遞增條件也可以用運算式來產生遞增條件,只是大多時候都會用簡單點的方式來呈現.
以下以單一迴圈來說明遞增關係,雖然大多數都會看到$i++這樣的遞增,但實際上看需求可以增加不同的值來產生跳號的效果.以下分別為+1,+2及+4的執行結果。
(二)巢狀迴圈
接下來我們來試試巢狀迴圈,巢狀迴圈因為有兩層以上的迴圈在控制,所以在設計上要特別注意內外圈的關係和執行工作的層次關係,比如在製作HTML的表格時<tr>標籤通常會在外圈時執行,而內圈則是執行<td>標籤.
以下我們用印星星來說明巢狀迴圈的應用與變化:
執行的結果會是
執行的結果會是
(三)複合條件迴圈
實務上會遇到的迴圈應用不會只是單純的執行一項工作,而且要在重覆的作業中再判斷一些工作是否執行或額外執行其它工作,這時就要增加判斷式或其它運算式來協助處理,比如大樓管理員在分信的時候不只是把同一住戶的信放在一起,還同時要判斷有沒有廣告信要挑出來,這樣的作業在”分信”這個重覆的動作還加入了”判斷是否同一住戶”及”判斷是否有廣告信”,
我們以一個方型星星的變化來說明:
執行結果會是:
執行結果會是:
執行結果會是:
留言
for($j=0 ; $j<($i-$s)+1 ; $j++) 這句我測試怪怪的 改成+2顯示才正確
所謂的怪怪的如果指的是空白的大小造成歪歪的感覺.. 那應該是字型造成,不同的字型的空白寬度不一樣… 所以只要調整到自己看起來沒問題就好了.或是改成印一個全形空白也可以