[基礎課程] PHP 重複執行迴圈
本篇學習重點為迴圈執行(不含陣列批次處理之語法),主要是透過邏輯判斷是否需要重新執行一段指令碼,能協助連續且重複性的反覆作業。請開始在 Web 目錄下新增檔案 1_loop.php,為了簡化程式碼結構將不建置 HTML 基本結構。請開始做 PHP 各種練習並預覽網頁結果。
for 迴圈處理
迴圈是只重複的執行一樣的動作,除非達到指定條件才會結束迴圈動作。for() 常見結構為:
for($i=start;$i<max;$i++){ |
for 的()
內主要有三個宣告動作分別用;分開,分別為:
- 初次動作:第一次執行的宣告動作,之後重複迴圈時忽略此項
- 進入條件:每次進來時的條件檢查,當成立時才會執行
{ }
內的#code
- 離開動作:
{ #code }
執行結束後,會執行這個動作
基本練習
練習:跟著以下行為猜測預期結果
|
理解動作:
- 當成是碰到 for() 時,先設定$i 為 0
- 接著 0<10 成立,執行 輸出 0,接著$i 做+1 動作
- 接著回到 for(),條件 1<10 成立,執行輸出 1,接著$i 做+1 動作
- 接著輸出 2,3,4,5,6,7,8,9
- 重複直到 10<10 不成立,for 行為結束。
思考練習,試著印出以下畫面:
1
4
7
10
解答:
|
到這裡你應該能理解 for 裡面三個宣告的定義與執行時機。
思考練習:
產生★*51 橫向排列顏色漸變,第一個★色碼 rgb(0,0,255),最後個★色碼 rgb(255,0,0)
解答:
for($k=0;$k<256;$k+=5) |
雙 for 迴圈
如果 for(A) 迴圈裡面又有 for(B),這種技巧下可以滿足 2 組以上不同的固定變化處理。double for 的邏輯深度到了二維去。思緒要跟著程式一起跑,才能幫助你解開並進入情境。
思考練習:
產生 99 乘法表,排版整齊,前二個方式請挑一個做或挑戰兩個,都挑戰完請挑戰第三個
- 用行內+換行標籤。
- 用表格標籤
- 整合前面練習,利用 style 讓整個乘法表有漸層。
解答 1: 只靠 span+br 橫向排列
|
解答 2: 利用 table 做縱向排列
<table border='1'><tr> |
解答 3: 整合之前的漸層色練習
|
while() 條件迴圈
while() 也是迴圈的一種,結構較簡單。跟前者差異在於 while() 只有一個條件判斷是否要執行該段#code。
練習:模仿 for 的動作
|
do while() 條件迴圈
do while 是 while 的變形版本,比較常見於檢查下,譬如 do 裡面要求使用者收入某資料,透過 while 去判定是否重新做一遍才離開迴圈。
|
for vs while vs do{} while() 三者比較
迴圈的方式大致上以這三種為主,每個的效果跟邏輯差不多都是碰到條件再決定是否要執行重複範圍。你可以用以下的觀念去思考
- for 一行就清楚表示遊戲規則,思緒上會比較清晰,適合簡單的迴圈控制變數增加減少行為。
- while 只有條件,適合自訂遊戲規則,做比較彈性,只要你有能力控制迴圈結束都可以用。
- do while 跟 while 一樣適合自訂遊戲規則,只差別於第一次進入檢查條件,更貼近 for 的效果
回家作業 A
練習作業:產生以下預覽(對稱的堆星塔)
<div style="text-align:center;width:200px"> |
回家作業 B
練習作業:完成作業 A 的學員,使用 rand 機率分別為 10%(red).20%(yellow).30%(pink).40%(white) 將星星換色 (style),整個背景為黑色。
解答:
<div style="text-align:center;width:200px;background-color:black;"> |
以上課題之完整代碼: view full code