250 likes | 438 Views
第四章 程式流程控制. 條件控制 迴圈. 4.1 流程控制的認識 (1). 在 PHP 中流程控制的指令分為兩類: 條件控制 與 迴圈 。 條件控制 :根據關係運算或邏輯運算的條件式來判斷程式執行的流程,依判斷的結果執行不同的程式區塊。條件控制的指令包括:. if if…else if…elseif…else switch. 4.1 流程控制的認識 (2). 迴圈 :根據關係運算或邏輯運算條件式的結果來判斷,重複執行指定的程式區塊。迴圈指令包括:. while do…while for foreach. 4.2 if 條件控制.
E N D
第四章 程式流程控制 • 條件控制 • 迴圈
4.1 流程控制的認識 (1) 在 PHP 中流程控制的指令分為兩類:條件控制 與 迴圈。 條件控制:根據關係運算或邏輯運算的條件式來判斷程式執行的流程,依判斷的結果執行不同的程式區塊。條件控制的指令包括: if if…else if…elseif…else switch
4.1 流程控制的認識 (2) 迴圈:根據關係運算或邏輯運算條件式的結果來判斷,重複執行指定的程式區塊。迴圈指令包括: while do…while for foreach
4.2 if 條件控制 4.2.1 單向選擇 if:如果…就… 這是一個單向選擇的條件控制結構,這個條件控制是最為單純的,也就是當判斷式成立時即執行區塊中的程式碼。 語法格式 以下是單向選擇流程控制的流程圖:
單向選擇 if • 程式範例 $A = 10 ; $B = 5 ; if ($A > $B ) { echo “變數A 大於變數B “; } echo "程式結束" ;
4.2.2 雙向選擇 if…else:如果…就…否則就… 這是一個雙向選擇的條件控制結構。條件判斷時,當條件成立時可以執行某個程式區塊,不成立時就執行另一個區塊時,即可使用這個條件控制結構 語法格式 以下是雙向選擇流程控制的流程圖:
雙向選擇 if…else • 程式範例 if($a > 0) { echo '$a 變數的值是正數'; }else{ echo '$a 變數的值是負數'; }
4.2.3 多向選擇 if…elseif…else:如果…就…如果…就…否則… (1) 當第一個條件成立時就執行指定的程式區塊,不然就看第二個條件是否成立,成立時就執行指定的程式區塊,以此類推,當所有的條件都不成立時,就執行最後一個程式區塊。
4.2.3 多向選擇 if…elseif…else:如果…就…如果…就…否則… (2) 語法格式 以下是多向選擇流程控制的流程圖(以設定3 個條件式為例):
多向選擇 if…elseif…else • 程式範例 if … elseif …範例: if ($A > $B) { echo "$A > $B" ; }elseif($A==$B){ echo "$A = $B" ; }else { echo "$A < $B" ; }
4.3 switch 條件控制 switch 也是一個多向選擇的條件控制,但是與 if / elseif / else 不同的地方是 if 或 elseif 後都是以一個條件式做為判斷的依據,而 switch 會定義一個自訂變數,而每一個執行區塊為會以 case 並且帶一個值為開頭,當該值等於 switch 所定義的變數時,即執行這個 case 中的程式區塊。 語法格式 以下是 switch 多向選擇流程控制的流程圖 (以設定 3 個方案為例):
4.3 switch 條件控制 • 程式範例 switch ($direction){ case "東": echo "我要往東走"; break; case "西": echo "我要往西走"; break; case "南": echo "我要往南走"; break; case "北": echo "我要往北走"; break; default: echo "我不知道要往哪走"; }
4.4 迴圈 在程式流程控制中,另一個相當重要的結構就是迴圈。在程式的某些區塊,會因為條件判斷或是設定次數的關係重複執行,一直到不符合條件或達到設定次數後才往下執行,這就是所謂的迴圈。 4.4.1 while 迴圈 while 迴圈是先設定條件,當符合條件時執行指定的程式,一直到不符合條件時才跳出迴圈。 語法格式 以下是 while 迴圈流程控制的流程圖: 11
4.4.1 while 迴圈 • 程式範例 • 本範例利用 while 迴圈顯示由 1 到 10 的數字。 while ($i<10){ $i++; echo $i.“ ”; // 為空白字元 }
4.4.2 do…while迴圈 do…while迴圈與while 迴圈幾乎是一樣的,只是do…while迴圈是先執行迴圈中的程式,並在最後才設定條件。當目前狀況仍符合條件時即繼續執行指定的程式區塊,一直到不符合條件時才跳出迴圈。 語法格式 以下是do…while 迴圈流程控制的流程圖:
4.4.2 do…while迴圈 • 程式範例 • 本範例利用 do…while 迴圈來顯示由 1 到 10 的數字。 do{ $i++; echo $i.“ ”; // 為空白字元 }while ($i<10)
4.5 for 計次迴圈 (1) 所謂計次迴圈,就是設定一個有次數的條件,若程式在符合條件的狀況下即執行迴圈內的程式,否則就跳出迴圈結束或往下執行程式。 for 計次迴圈是先設定一個變數的初值,再設定該變數執行計次的條件,最後設定變數的計次方式。當符合條件時即執行指定的程式區塊後計次,一直到不符合條件時才跳出迴圈結束程式或往下執行。
4.5 for 計次迴圈 (2) 語法格式 以下是 for 計次迴圈流程控制的流程圖:
4.5 for 計次迴圈 (2) • 程式範例 • 本範例要顯示由 1 加到 10 的總和。 for ($i=1;$i<=10;$i++){ $countI += $i; } echo $countI;
FOREACH迴圈 foreach, 專門使用在陣列操作, 有二種格式分如下:1) foreach (array_expression as $value)2) foreach (array_expression as $key => $value) 與後面的陣列設定值有關 兩者的差別在「index 值是否需要」。
FOREACH迴圈 • FOREACH 格式-Type 1 foreach (陣列名稱 as $value){迴圈敘述 ;} • 意義:每次迴圈依序將陣列元素的內容放入 $value 變數中, 直到陣列中每一個元素都執行一次。 • 範例: $month = array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug', 'Sep','Oct','Nov','Dec') ; foreach ($month as $value) echo "$value <br> " ;
FOREACH迴圈 FOREACH 格式-Type 2 foreach (陣列名稱 as $key => $value) {迴圈敘述 ;} 意義:除了會將陣列元素依序存入 $value 外, 也會將陣列指標 index 同時存入 $key 中。
FOREACH迴圈 1: <html> 2: <title>Foreach</title> 3: <body> 4: <?php 5: $A = array (0,10,20,30,40,50,60) ; 6: foreach ($A as $key => $value){ 7: echo "\$A[$key] : " ; 8: echo "$value <br> " ; 9: } 10: ?> 11: </body> 12: </html> FOREACH 格式-Type 2 範例
4.6 流程控制的跳躍指令 程式設計有時需要將目前的執行動作直接跳出流程控制區塊或是迴圈,執行下一輪的迴圈動作或向下執行程式,此時就必須使用跳躍指令。 關於 break 與 continue break 及 continue 就是流程控制中的跳躍指令,它們都能停止目前的程式動作,不同的是 break 指令會跳出流程控制區塊或是迴圈往下執行,而 continue 指令會跳出目前的迴圈動作進行下一輪迴圈的執行。
作業一 簡易購物車 • 假設有三種商品,其名稱、價格如下: • php 入門書 $400 • c 語言入門書 $ 550 • 資料結構原文書 $ 800 且有三種會員資格,分別會打不同的折扣如下: • 金卡會員 7折 • 銀卡會員 8折 • 一般會員 95折 • 設計一個 purchase.html 頁面,讓使用者輸入「使用者名稱」、「購買數量」、「會員資格」(單選)後,送出至 purchase.php 負責計算折扣後,並列出: 使用者名稱、購買物品、會員資格,折扣,總金額等資料。 • Due data: 二週後。