首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP switch 語句多值匹配同一代碼區塊的實作技巧

     編輯:PHP 相關知識

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 範圍內";
}
?>

執行流程解析

  1. 當 $i = 2 時,先匹配 case 1 失敗
  2. 進入 case 2 匹配成功,但該區塊無任何語句
  3. 程式不中斷,繼續「落下」至 case 3
  4. case 3 同樣無語句,繼續落下
  5. 最終抵達 echo 語句並執行輸出
  6. 遇到 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 或後續 case
  • 空 case 僅能用於「完全相同的處理邏輯」;若不同值需執行略有差異的操作,仍應分別撰寫或改用 if-else
  • PHP 7.0+ 支援標量型別宣告,搭配 switch 可提升程式碼可讀性與型別安全

善用 switch 的貫穿特性,能讓多值分支邏輯更簡潔優雅,是 PHP 開發者必備的語法技巧之一。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved