switch 適用於「單一運算式對比多個離散值」的情境,比多層 if/elseif 更清晰、效能略優(內部用跳躍表優化)。
switch (expr) {
case value1:
// 程式碼
break;
case value2:
// 程式碼
break;
...
default:
// 所有 case 都不符合時執行
}
expr 值。case 值(鬆散比較 ==)。case 及其後所有程式碼,**直到遇到 break 或結束**。break 會「貫穿」執行下一 case(有時可利用此特性合併案例)。default(可選)。<?php
$x = 2;
switch ($x) {
case 0: echo "x 等於 0"; break;
case 1: echo "x 等於 1"; break;
case 2: echo "x 等於 2"; break;
default: echo "x 不等於 0、1、2";
}
?>
輸出:x 等於 2
case 1: case 2: case 3: echo "1-3"; break;case 'foo':、case 'bar': 皆可。switch 使用 == 比較,0 == 'abc' 為 true,嚴格比對請用 switch (true) 配合 case $x === 0:。PHP 7+ 對 switch 做了優化(編譯期建立跳躍表),大量離散值比對比 if/elseif 鏈快 2-3 倍。
善用 switch 處理多值分派,代碼結構清晰、易維護,並能獲得效能優勢。記得加 break 避免非預期貫穿。