switch 語句用於多條件分支判斷,比多層 if/else 更清晰,且在某些情況下效能更優(跳躍表優化)。
switch (表達式) {
case 常量1:
語句群;
break;
case 常量2:
語句群;
break;
...
default:
語句群;
break;
}
<?php
$mychar = 'c';
switch ($mychar) {
case 'a': echo '今天是星期一。'; break;
case 'b': echo '今天是星期二。'; break;
case 'c': echo '今天是星期三'; break;
case 'd': echo '今天是星期四'; break;
case 'e': echo '今天是星期五'; break;
case 'f': echo '今天是星期六'; break;
case 'g': echo '今天是星期天'; break;
default: echo '沒有相應的日期!';
}
?>
| 特性 | 說明 |
|---|---|
| 比較機制 | 鬆散比較 (==),'1' == 1 為 true |
break 作用 | 跳出 switch,省略會導致「貫穿」執行後續 case |
default | 可選,無匹配 case 時執行,位置可任意 |
| 常量型別 | int、float、string、bool 等純量 |
| 表達式求值 | 僅計算一次,與多次 if 條件評估不同 |
<?php
$grade = 'B';
switch ($grade) {
case 'A':
case 'B':
case 'C':
echo '及格'; break;
case 'D':
case 'F':
echo '不及格'; break;
default:
echo '無效等級';
}
?>
break,需貫穿時加註釋 // fall through=== 比較:switch (true) { case $x === 'a': ... }switch 是處理離散值多路分支的利器,善用能大幅提升代碼可讀性。