當需針對同一變數進行多值比較時(如 20 個旅遊目的地),if/elseif 鏈會冗長且效能較差。switch 只評估一次變數值,直接跳轉至對應 case,結構更清晰、效能更好。
switch ($variable) {
case "值1":
// 程式碼
break;
case "值2":
// 程式碼
break;
default:
// 所有 case 都不符合時執行
}
$destination = "Tokyo";
echo "Traveling to $destination<br />";
switch ($destination) {
case "Las Vegas":
echo "Bring an extra \$500";
break;
case "Amsterdam":
echo "Bring an open mind";
break;
case "Egypt":
echo "Bring 15 bottles of SPF 50 Sunscreen";
break;
case "Tokyo":
echo "Bring lots of money";
break;
case "Caribbean Islands":
echo "Bring a swimsuit";
break;
default:
echo "Bring lots of underwear!";
}
輸出:
Traveling to Tokyo
Bring lots of money
若省略 break,程式會繼續執行下一個 case(fall-through)。除非刻意設計,否則每個 case 都應加上 break。
永遠加上 default 處理預期外的值,避免邏輯漏洞。default 可放在任意位置,慣例放在最後。
switchif/elseswitch 較優