Switch語句也是物件導向編程語句中最長常見的邏輯控制語句了。Switch 語句用於執行基於多個不同條件的不同動作 – 即當條件不同的時候,執行不同的邏輯操作。它跟其他語句中的switch用法差不多的,但注意有有一個break語句。
PHP中switch語句的標準文法:
switch (expression){case label1: code to be executed if expression = label1; break; case label2: code to be executed if expression = label2; break;default: code to be executed if expression is different from both label1 and label2;}
舉例:
switch($i){ case 1: echo 1; break; case 2: echo 2; break; default: echo 'others';}
也可以使用switch來判斷一個取值範圍,或者說是在case中自訂條件。
<?phpheader("content-type:text/html;charset=utf8");$score=50;switch($score) { case $score>=90 && $score<=100: echo "優<br>"; break; case $score>=80 && $score<90: echo "良<br>"; break; case $score>=70 && $score<80: echo "中<br>"; break; case $score>=60 && $score<70: echo "及格<br>"; break; case $score>=0 && $score<60: echo "不及格<br>"; break; default: echo"成績輸入錯誤<br>";}?>
簡單樣本
<?php //switch細節 //情況一:數值匹配的時候自動轉換成字串 $a=1; switch($a){ case "1": echo 'hello1'; break; default: echo 'sorry none is the same!'; break; } echo '<br/>'.'成功退出····'; echo '<hr/>'; //情況二:數值匹配的時候自動轉換成字元 $a=1; switch($a){ case '1': echo 'hello2'; break; default: echo 'sorry none is the same!'; break; } echo '<br/>'.'成功退出····'; echo '<hr/>'; //情況三:字元匹配的時候自動轉換成數值 $a='1'; switch($a){ case 1: echo 'hello3'; break; default: echo 'sorry none is the same!'; break; } echo '<br/>'.'成功退出····'; echo '<hr/>'; //情況四:字串匹配的時候自動轉換成數值 $a="1"; switch($a){ case 1: echo 'hello4'; break; default: echo 'sorry none is the same!'; break; } echo '<br/>'.'成功退出····'; echo '<hr/>'; //情況五:float也可以匹配 $a=1.1; switch($a){ case 1.1: echo 'hello5'; break; default: echo 'sorry none is the same!'; break; } echo '<br/>'.'成功退出····'; echo '<hr/>'; //情況六:非0是true $a=true; switch($a){ case 1: echo 'hello6'; break; case true: echo 'hello61'; break; default: echo 'sorry none is the same!'; break; } echo '<br/>'.'成功退出····'; echo '<hr/>'; //情況七:能匹配boolean $a=true; switch($a){ case true: echo 'hello7'; break; case 2: echo 'hello71'; break; default: echo 'sorry none is the same!'; break; } echo '<br/>'.'成功退出····'; echo '<hr/>'; //情況八:能匹配null $a=null; switch($a){ case 2://'' "" false 0 都能進入 echo 'hello8'; break; case null: echo 'hello81'; break; default: echo 'sorry none is the same!'; break; } echo '<br/>'.'成功退出····'; echo '<hr/>'; //情況九:退出順序 $a=5; switch($a){ case 1: echo 'hello6'; break; case 2: echo '我是2號出口'; break; case 5: echo '我是5號出口'; //break; case true: echo 'hello61'; break; default: echo 'sorry none is the same!'; break; } echo '<br/>'.'成功退出····'; echo '<hr/>'; //情況十:退出順序 $a=50; switch($a){ default: echo 'sorry none is the same!'; //break; case 50: echo 'hello6'; //break; case 2: echo '我是2號出口'; break; case 5: echo '我是5號出口'; //break; case 6: echo 'hello61'; break; } echo '<br/>'.'成功退出····'; echo '<hr/>'; ?>
運行結果
hello1成功退出····hello2成功退出····hello3成功退出····hello4成功退出····hello5成功退出····hello6成功退出····hello7成功退出····hello81成功退出····我是5號出口hello61成功退出····hello6我是2號出口成功退出····
不管寫什麼語言的程式,一定會考慮到代碼的運行效率問題。在查閱了一些資料後,switch與ifelse在不同的‘環境'下效率各有優勝。
1、當被判斷的值是常量(固定不變的值)時,switch的運行效率比ifelse的運行效率高;
$changliang=3; // 變判斷的值為常量switch($changliang){ case 1: echo '常量值為1'; break; // 跳出迴圈 case 2: echo '常量值為2'; break; case 3: echo '常量值為3'; break;}
2、當被判斷值為變數,ifelse的運行效率高於switch,ifelse貫徹一判到底的方針,會從第一個條件開始判斷,直到最後一個else,所以學會使用switch有好處;
$a = $_GET['a']; // 通過get傳值後接值; 被判斷的值if($a=1){ echo '變數a的值為1';}elseif($a=2){ echo '變數a的值為2';}elseif($a=3){ echo '變數a的值為3';}else{ echo '變數a的值為不知道';}