PHP 的 switch 語句採用「貫穿」執行機制:當 case 匹配成功後,程式會持續向下執行後續所有 case 區塊,直到遇到 break 或結束大括號。利用這項特性,我們可以輕鬆實現「多個值對應同一邏輯」的需求。
switch (表達式) {
case 值1:
// 匹配值1 時執行
break;
case 值2:
// 匹配值2 時執行
break;
default:
// 以上皆不匹配時執行
}
關鍵在於省略中間 case 的 break 與執行語句,讓多個 case 依序「落下」至同一處理邏輯:
<?php
$i = 2;
switch ($i) {
case 1:
case 2:
case 3:
echo "變數 \$i 的值為 1、2 或 3 中的其中一個,目前值為:$i";
break;
default:
echo "\$i 的值不在 1~3 範圍內";
}
?>
$i = 2 時,先匹配 case 1 失敗case 2 匹配成功,但該區塊無任何語句case 3case 3 同樣無語句,繼續落下echo 語句並執行輸出break 跳出 switch雖然 switch 僅能做嚴格相等比較,但配合技巧可處理區間判斷:
<?php
$score = 85;
switch (true) {
case ($score >= 90):
echo "優等";
break;
case ($score >= 80):
echo "甲等";
break;
case ($score >= 60):
echo "及格";
break;
default:
echo "不及格";
}
?>
此處利用 switch (true) 將每個 case 變為布林判斷式,實現類似 if-elseif 鏈的效果,但程式碼結構更清晰。
case 加上 break,否則會誤執行 default 或後續 casecase 僅能用於「完全相同的處理邏輯」;若不同值需執行略有差異的操作,仍應分別撰寫或改用 if-elseswitch 可提升程式碼可讀性與型別安全善用 switch 的貫穿特性,能讓多值分支邏輯更簡潔優雅,是 PHP 開發者必備的語法技巧之一。