1 / 27

PHP5 與 MySQL5 入門學習指南

PHP5 與 MySQL5 入門學習指南. 第 11 章 條件判斷敘述. 凱文瑞克 著. 本章大綱. 11-1 IF 指令 11-2 SWITCH 指令 問題與討論. 11-1 IF 指令. 程式中依據不同需求而執行不同的程式碼 . IF 指令有三種基本格式 if … if … else … if … elseif …. if …. 格式 if ( 條件判斷式 ) { 判斷式為真時要執行的指令 ; 也可以是多行指令 ; } 這種判斷式是一種簡單的判斷式 , 條件判斷式可由前一章所介紹的運算式與邏輯運算子組合而成

Download Presentation

PHP5 與 MySQL5 入門學習指南

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PHP5與MySQL5入門學習指南 第 11 章 條件判斷敘述 凱文瑞克 著

  2. 本章大綱 11-1 IF指令 11-2 SWITCH指令 問題與討論

  3. 11-1 IF指令 • 程式中依據不同需求而執行不同的程式碼. • IF指令有三種基本格式 • if … • if … else … • if … elseif …

  4. if … • 格式if (條件判斷式) {判斷式為真時要執行的指令 ;也可以是多行指令 ;} • 這種判斷式是一種簡單的判斷式, 條件判斷式可由前一章所介紹的運算式與邏輯運算子組合而成 • 條件判斷式後面以大括弧將判斷式所需的指令敘述括起來。 • 當判斷式的內容為真則執行大括弧內的指令敘述。括弧內的指令敘述可以是一行或一行以上。如果判斷式的內容為假則忽略大括弧內的指令敘述向下繼續執行

  5. 1: <html> 2: <title>條件判斷式</title> 3: <body> 4: <?php 5: $A = 10 ; 6: $B = 5 ; 7: if ($A > $B ) { 8: echo "$A > $B <br>" ; 9: echo "看見上述內容表示條件判斷式為真<p>" ; 10; } 11: echo "程式結束" ; 12: ?> 13: </body> 14: </html> 第 7 行 IF 的判斷式為真 (意即 $A 的值大於 $B 的值是事實), 因此會執行大括弧內的第 8-9 行敘述。在圖中我們可以看到 "10 > 5" 的文字。離開判斷敘述後向下執行第 11 行, echo 會顯示 "程式結束"。

  6. 1: <html> 2: <title>判斷敘述</title> 3: <body> 4: <?php 5: $A=90 ; 6: if ($A>0 && $A<=100){ 7: echo "\$A = $A <p>" ; 8: echo "$A 是介於 0 到 100 之間"; 9: } 10: ?> 11: </body> 12: </html> 第 6 行條件判斷式中有二個條件式, 利用邏輯運算子 "&&" 將二個條件式 $A>0 和 $A<=100 結合在一起。因為 "&&" 運算子, 所以只有在二個條件式為真時, IF 判斷式的結果才為真, 如果其中任何一個條件式為假則條件判斷式為假。在這段程式中判斷式是由兩個條件組合而成, 由此可知判斷式中的條件可以利用邏輯運算子加以結合, 當整個判斷式計算完畢之後依真、假值再決定是否執行判斷敘述。在本例中 條件判斷式的結果為真, 程式舊會執行判斷敘述內的第 7-8 行指令。

  7. 1: <html> 2: <title>判斷敘述</title> 3: <body> 4: <?php 5: $order = 50000 ; 6: echo "您訂購的金額是 $order <br>"; 7: if ($order >=10000) { 8: $order=$order*0.8 ; 9: echo "您折扣後的金額是 $order <br>"; 10: if ($order >=20000){ 11: echo "本公司免費提供送貨服務" ; 12: } 13: } 14: ?> 15: </body> 16: </html> 巢狀IF : IF中還有IF 第 7 行是 IF 條件判斷指令。 如果訂購的金額超過 10000 元則執行第 7-13 行給予 8 折優待, 以及是否提供送貨服務。 如果沒有超過 10000 元則忽略第 7-13 行不給予折扣等優惠, 直接結束程式。 當金額超過 10000 元第 7 行 IF 的條件式為真, 此時繼續執行 8-13 行。 第 8 行將 $order 乘以 0.8, 計算 8 折的折扣。 第 10 行又是一個 IF 條件判斷式用來判斷折扣後的金額是否大於 20000 元, 如果是則執行第 9-12 行, 。

  8. if … else … • 判斷的條件為真時要做某種處理, 若為假時也要做某些處理 • 格式if (判斷式) {判斷式為真時要執行的指令 ;也可以是多行指令 ;} else {判斷式為假時要執行的指令 ;也可以是多行指令 ;} • 和格式一不同的是多的一個 else 指令, else 表示否則的意思。也就是說, 如果判斷式為真則執行 IF 到 else 之間為真時要執行的指令, 如果為假則執行 else 後的指令。

  9. If … else … 1: <html> 2: <title>判斷敘述</title> 3: <body> 4: <?php 5: $Chinese = 90 ; 6: $English = 80 ; 7: echo "國文成績是 $Chinese 分<br>" ; 8: echo "英文成績是 $English 分<br>" ; 9: $Avg=($Chinese + $English)/2 ; 10: echo "平均 = $Avg 分 "; 11: if ($Avg >=60) { 12: echo " 成績及格" ; 13: } else { 14: echo " 成績不及格" ; 15: } 16: ?> 17: </body> 18: </html> 第 5-6 行分別設定國文成績為 90, 英文成績為 80。 第 7-8 行顯示國文及英文成績於網頁。 第 9 行計算平均成績, 並存於 $Avg 變數中。 第 10 行顯示平均成績於網頁。 第 11 行是 IF 指令, 判斷成績 ($Avg) 是否及格 (大於等於 60), 如果及格執行第 12 行, 如果不及格則執行第 14 行。

  10. 1: <html> 2: <title>判斷式</title> 3: <body> 4: <?php 5: if (empty($_GET["sex"])) { 6: ?> 7: <form action=<?php echo $_SERVER["PHP_SELF"] ?> method="get"> 8: 姓名:<input type=text name=n><br> 9: 性別:<br> 10: <input type=radio name=sex value=1>男<br> 11: <input type=radio name=sex value=2>女<br> 12: <input type=submit value="送出"> 13: <input type=reset value="重填"> 14: </form> 15: <?php 16: }else{ 17: echo $_GET["n"]; 18: if ($_GET["sex"]==1){ 19: echo "先生您好"; 20: }else{ 21: echo "小姐您好"; 22: } 23: } 24: ?> 25: </body> 26: </html> 表單輸入 回應輸出

  11. 檢查 $_GET["sex"] 變數的內容是否為空的, 如果是空的表示尚未有資料輸入, 此時執行第 7-14 行的表單輸入。 若 變數sex的內容不是空的就表示表單已輸入資料, 此時執行第 17-22 行回應表單輸入的內容。 4: <?php 5: if (empty($_GET["sex"])) { 6: ?> 7: <form action=<?php echo $_SERVER["PHP_SELF"] ?> method="get"> 8: 姓名:<input type=text name=n><br> 9: 性別:<br> 10: <input type=radio name=sex value=1>男<br> 11: <input type=radio name=sex value=2>女<br> 12: <input type=submit value="送出"> 13: <input type=reset value="重填"> 14: </form> 第 7-14 行是一個表單輸入。 第 7 行 action 是送到 $_SERVER[PHP_SELF] 變數, 其實變數內容就是程式本身的檔案名稱, 也就是將表單內容送到自己本身處理。 表單內容則是要求輸入一個姓名, 並且以n為變數名稱傳回程式中。 另以單選選項輸入選擇男性或女性, 以 sex 為變數名稱傳回程式。

  12. 15: <?php 16: }else{ 17: echo $_GET["n"]; 18: if ($_GET["sex"]==1){ 19: echo "先生您好"; 20: }else{ 21: echo "小姐您好"; 22: } 23: } 24: ?> 第 17 行顯示姓名, 第 18 行依據外部變數 sex 決定顯示第 19 行或第 21 行的稱謂。 如上圖, 不同性別輸入, 得到不同的輸出畫面.

  13. 1: <html> 2: <title>判斷敘述</title> 3: <body> 4: <?php 5: if (preg_match("/MSIE/",$_SERVER["HTTP_USER_AGENT"])){ 6: echo "你的瀏覽器是 IE" ; 7: }else{ 8: echo "你的瀏覽器不是 IE" ; 9: } 10: ?> 11: </body> 12: </html> HTTP_USER_AGENT 會傳回使用者的相關資訊, 包括瀏覽器的類型、作業系統等相關的資訊, 我們可以使用 $_SERVER 陣列將所需要的 PHP 預設變數 HTTP_USER_AGENT 讀入。第5行我們利用 preg_match() 來搜尋 $_SERVER["HTTP_USER_AGENT"] 中是否有 "MSIE" 。的字串出現, 如果有就表示使用的的瀏覽器為 IE, 否則為其他型式的瀏覽器。 判斷使用者的瀏覽器類型

  14. 簡單的if … else … 寫法 判斷敘述 ? 為真敘述 : 為假敘述 說明: ? 前為一個條件判斷式, 當條件式為真則執行 : 前敘述, 當條件式為假則執行 : 後敘述。 例: $a>$b ? $c="true" : $d="false" ; 當 $a>$b 為真時執行 $c="true", 反之則執行 $d="false"。

  15. If … elseif … • 結合了 else 及 if, 如果 IF 的條件判斷式為假時在 else 的位置可以再做一次條件判斷。 • 如同前述的巢狀 IF, 在 else 後也可以再做第二次判斷。

  16. If … elseif … • 格式:if (判斷式A) {處理A ;判斷式A為真時要執行的指令 ;可以是多行指令 ;}elseif (判斷式B) {處理B ;判斷式B為真時要執行的指令 ;可以是多行指令 ;} else {處理C ;判斷式B為假時要執行的指令 ;可以是多行指令 ;} 第三種判斷式格式是屬於多重判斷指令。由流程圖中可以看到當條件判斷式A為真時程式會跳到處理A指令區塊執行, 當執行完畢後就會離開多重判斷式繼續執行。 如果條件判斷式A為假則會進入條件判斷式B中進行第二次判斷。由流程圖中可以看到處理A到處理C是由判斷式A和判斷式B的真假值來決定進入那一個處理敘述中。但無論如何只會執行處理A, B, C其中一個處理敘述, 。

  17. 1: <html> 2: <title>多重判斷</title> 3: <body> 4: <?php 5: $A = 10 ; 6: $B = 15 ; 7: echo "\$A = $A <p>" ; 8: echo "\$B = $B <p>" ; 9: if ($A > $B) { 10: echo "$A > $B" ; 11: }elseif($A==$B){ 12: echo "$A = $B" ; 13: }else { 14: echo "$A < $B" ; 15: } 16: ?> 17: </body> 18: </html> 第 9 行 IF 判斷式和第 11 行 elseif 的判斷式都不成立, 所以會執行第 13 行 else 的敘述。

  18. 另外一種 IF 指令的寫法 一般我們都是利用大括弧將多個指令括起來表示某一個處理敘述。另外一種寫法則是使用 ":" 及 endif 來代替大括弧。例如 IF 的第二種格式可以改寫如下 if (判斷式): 判斷式為真時處理敘述 ; else: 判斷式為假時處理敘述 ; endif

  19. 1: <html> 2: <title>判斷敘述</title> 3: <body> 4: <?php 5: if (preg_match("/MSIE/",$_SERVER["HTTP_USER_AGENT"])){ 6: echo "你的瀏覽器是 IE" ; 7: }else{ 8: echo "你的瀏覽器不是 IE" ; 9: } 10: ?> 11: </body> 12: </html> 5-9行可改寫成  <?php if (preg_match("/MSIE/",$_SERVER["HTTP_USER_AGENT"])): echo "你的瀏覽器是IE" ; else: echo "你的瀏覽器不是IE" ; endif ?>

  20. 11-2 SWITCH指令 • 在程式中如果只是利用一個變數做為多個判斷條件的依據, 例如當變數值為 1、2 或 3 時分別做不同的處理。 • Switch 指令可以取代巢狀 IF, 使寫法更加簡捷。Switch 格式如下:switch (判斷變數) { case 條件1 :敘述 ; break; case 條件2 :敘述 ; break ; ... case 條件n:敘述 ; break ; default :敘述 ; }

  21. SWITCH指令 • switch 由判斷變數的值和各 case 的條件來比較, 符合那一個 case 的條件則執行那一段敘述。如果全部的 case 都不符合時就執行 defualt 的敘述。 • Break 指令的功能是跳離 switch 指令。當判斷變數符合某一個 case, 進入該 case 敘述執行後就應該要離開 switch 不可以再進入其他 case 區域中, 此時利用 break 指令跳離 switch 指令。

  22. 1: <html> 2: <title>SWITCH</title> 3: <body> 4: <?php 5: $A=2; 6: echo "\$A = $A <br>" ; 7: switch ($A) { 8: case 1 : 9: echo "A=1" ; 10: break; 11: case 2 : 12: echo "A=2" ; 13: break ; 14: case 3: 15: echo "A=3" ; 16: break ; 17: default : 18: echo "A不是介於1到3之間" ; 19: } 20: ?> 21: </body> 22: </html> 第 5 行設定 $A=2。 第 6 行將 $A 的內容顯示在網頁上。 第 7-19 行是 SWITCH 指令, 第 7 行依據 $A 的內容決定執行第 11 行 case 2, 因為 $A 的內容為 2 所以選擇 case 2。 第 12 行顯示 A=2。 第 13 行 break 指令使程式跳出 SWITCH 指令繼續執行。

  23. 1: <html> 2: <title>SWITCH</title> 3: <body> 4: <?php 5: For ($A=1; $A<=5; $A++){ 6: echo "\$A = $A <br>" ; 7: switch ($A) { 8: case 1 : 9: echo "Hello " ; 10: break; 11: case 2 : 12: echo "My friend." ; 13: break ; 14: case 3: 15: echo "PHP is a good solution." ; 16: break ; 17: default : 18: echo "Error! You got a invalid number" ; 19: } 20: echo "<hr width=300 align=left><p>" ; 21: } 22: ?> 23:</body> 24: </html> 第 5 行先設定一個 FOR 迴圈, 讓 $A 從 1 開始每次加 1, 一直到 5 為止。也就是說 SWITCH 指令會被執行 5 次

  24. 1: <html> 2: <title>SWITCH</title> 3: <body> 4: <?php 5: For ($A=1; $A<=3; $A++){ 6: echo "\$A = $A <br>" ; 7: switch ($A) { 8: case 1 : 9: echo "Hello " ; 10: case 2 : 11: echo "My friend." ; 12: break ; 13: case 3: 14: echo "PHP is a good solution." ; 15: break ; 16: default : 17: echo "Error! You got a invalid number" ; 18: } 19: echo "<hr width=300 align=left><p>" ; 20: } 21: ?> 22: </body> 23: </html> Break刪除 當 $A=1 進入第 8 行 case 1 的敘述後顯示 "Hello", 原本應離開 SWITCH 指令, 可是沒有 break 指令所以不會跳離開 SWITCH, 而會直接向下執行進入 case 2 的敘述, 接著顯示 "My friend", 最後因 case 2 中的第 12 行 break 而跳離 SWITCH。至於 $A 的值為 2 和 3 時, 輸出和上一個範例相同。

  25. 4: <?php 5: if (empty($_GET['score'])): 6: ?> 7: <form action=<?php echo $_SERVER['PHP_SELF'] ?> method=get> 8: 姓名 <input type=text value="請輸入姓名" name=user><p> 9: 請選出你所喜歡的運動 <br> 10: <input type=radio value=1 name=score>慢跑<br> 11: <input type=radio value=2 name=score>游泳<br> 12: <input type=radio value=3 name=score>籃球<br> 13: <input type=submit value="送出"> 14: <input type=reset value="重寫"></form> 15: <?php 16: else : 17: echo "Hi, ".$_GET['user']." <br> 你最喜歡的運動是" ; 18: switch ($_GET['score']){ 19: case 1: 20: echo "慢跑" ; 21: break ; 22: case 2 : 23: echo "游泳" ; 24: break ; 25: case 3 : 26: echo "籃球" ; 27: break ; 28: default: 29: echo "沒有選擇" ; 30: } 31: endif 32: ?>

  26. 購物總金額 折 扣 總金額大於10000元 九折 總金額大於50000元 八折 總金額大於100000元 六折 問題與討論 • 請撰寫一程式可以判斷目前使用中的瀏覽器種類。 • 延續第十章第4題, 若平均不及格則顯示“請再努力”, 若及格則顯示“恭喜您及格!”。三科成績必須由使用者自行輸入。(提示:請參考第八章表單輸入) • 請撰寫一個程式依顧客購物金額, 顯示給予的優惠折扣為何。

  27. 問題與討論 • 請利用SWITCH指令完成確認網頁, 可使確認網頁出現客戶下訂單的產品名稱。訂單網頁片段如下:<form action=“確認網頁檔名” method=“get”>公司名稱 <input type=text name=company size=20><br>訂購產品<br><input type=radio name=p value=1>主機板<br><input type=radio name=p value=2>螢幕<br><input type=radio name=p value=3>記憶體<br><input type=submit value=“確認”><input type=reset value=“重填”></form> • 請寫程式判斷使用者輸入的密碼是否正確。(帳號: Kelly 密碼:"john")

More Related