Board logo

標題: 3-2 多路徑選擇的switch敘述 [打印本頁]

作者: 小誌    時間: 2011-4-18 18:05     標題: 3-2 多路徑選擇的switch敘述

3-2   多路徑選擇的switch敘述
使用過了if-else敘述,我們得知if-else敘述在條件成立後會執行條件式之後的敘述,若條件不成立則會執行else之後的敘述,只能二選一;如果程式有很多狀況,需要建立多條選擇路徑,則我們可以使用else if逐條過濾條件敘述,但是使用else if逐條過濾條件敘述來撰寫程式,不但眼睛都看花了,而且程式又拖的很長,此時我們就可以利用具有多路徑選擇的switch敘述來撰寫程式。

switch case敘述可以根據變數中的資料數值來決定程式的執行流程,其變數的型態可以是字元型態、整數型態…等,利用switch case敘述來撰寫程式不但執行速度快,而且程式也淺顯易懂多了,其格式如下:
switch判斷敘述區塊格式
  1. switch  (評估值)  
  2. {
  3.      case條件值1:
  4.          敘述區塊1;
  5.         break;
  6.      case 條件值2:
  7.          敘述區塊2;
  8.         break;
  9. .
  10. .
  11.      case 條件值n:
  12.          敘述區塊n;
  13.         break;
  14. default:
  15.          敘述區塊n+1;
  16. }
複製代碼
上列的格式意義是:當評估值符合條件值1時就執行程式區塊1,評估值符合條件值2時就執行程式區塊2…,評估值符合條件值n時就執行程式區塊n,如果任何條件都不符合則執行程式區塊n+1。

[attach]5469[/attach]
圖3-5   switch敘述流程圖。
作者: 小誌    時間: 2011-4-18 18:07

實例說明:(範例光碟ex03_04.php,ex03_04_show.php)
一直使用單行文字方塊的表單元件真是無趣,現在我們換單選式按鈕元件來玩玩吧!設計一表單程式網頁,由瀏覽者選擇他喜歡的網頁背景顏色,當顏色選定並按下「確定」按鈕後,就將網頁底色變成瀏覽者所選定的顏色:
[attach]5470[/attach]
圖3-6  範例ex03_04.php,ex03_04_show.php。

ex03_04_show.php
  1. <?
  2. switch ($_POST["color"])
  3. {
  4.     case "y":
  5.       echo "<body bgcolor=yellow>";
  6.     break;
  7.     case "g":
  8.       echo "<body bgcolor=green>";
  9.     break;
  10.     case "b":
  11.       echo "<body bgcolor=blue>";
  12.     break;
  13. }
  14. ?>
複製代碼
提示
上例中,您有沒有發現少了什麼?沒錯!就是default!這樣撰寫並沒有問題,只要判別所有的條件值都不符合後,就不會執行任何敘述,而直接跳至switch敘述區塊之外的下一個敘述。
作者: 小誌    時間: 2011-4-18 18:08

實做學習4:(範例光碟test03_04.php,test03_04_show.php)
switch敘述中的條件值,並不限定每個case內都要有敘述,還可以是一個範圍的資料,,例如:讓瀏覽者輸入月份,按下確定按鈕後,告訴他該月份是哪一個季節:
test03_04_show.php
  1. <?
  2. switch ($_POST["moon"])
  3.   {
  4.     case 1: case 2: case 3:
  5.           echo "春天";
  6.           break;
  7.     case 4: case 5: case 6:
  8.           echo "夏天";
  9.           break;
  10.     case 7: case 8: case 9:
  11.           echo "秋天";
  12.           break;
  13.     case 10: case 11: case 12:
  14.           echo "冬天";
  15.           break;
  16.     default:
  17.           echo "錯誤";
  18.   }
  19. ?>
複製代碼

作者: 小誌    時間: 2011-4-18 18:09

在switch case敘述區段中,除了可以使用「{ }」把這些敘述(敘述區塊)包括在其中外,亦可放棄使用「{ }」來包括敘述,改用「endswitch;」來做,格式如下:
switch判斷敘述區塊格式
  1. switch (評估值):  
  2.      case條件值1:
  3.          敘述區塊1;
  4.         break;
  5.      case 條件值2:
  6.          敘述區塊2;
  7.         break;
  8. .
  9. .
  10.      case 條件值n:
  11.          敘述區塊n;
  12.         break;
  13. default:
  14.          敘述區塊n+1;
  15. endswitch;
複製代碼
在switch(評估值)與endswitch;的作法中,在switch(評估值)之後必須加上「:」冒號代表敘述區段的起始,而敘述區塊中的每個單行敘述結尾同樣必須加上「;」,例如
  1. <?
  2. switch ($_POST["color"]):
  3.     case "y":
  4.       echo "<body bgcolor=yellow>";
  5.     break;
  6.     case "g":
  7.       echo "<body bgcolor=green>";
  8.     break;
  9.     default:
  10.       echo "<body bgcolor=blue>";
  11.     endswitch;
  12. ?>
複製代碼





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)