PHP Switch 语句

2025 年 5 月 15 日 | 阅读 5 分钟

PHP 中的 switch 语句允许对单个变量进行多个 if-else 条件判断。变量有时需要与多个值进行比较,并且对于每个值都必须执行不同的代码。在大多数情况下,您会编写 if-elseif-else。

如果 if-else 语句过多,代码可能会变得冗长且难以理解。通过使用 switch 语句代替多个 if-else 语句,可以降低代码复杂性并提高可读性。

语法

重要提示

  1. default 是一个可选语句。即使它不重要,default 也必须始终是最后一个语句。
  2. 一个 switch 语句中只能有一个 default。多个 default 可能会导致 致命错误
  3. 每个 case 都可以有一个 break 语句,用于终止语句序列。
  4. 在 switch 中使用 break 语句是可选的。如果未使用 break,则在找到匹配的 case 值后,所有语句都将执行。
  5. PHP 允许在 switch 表达式中使用数字、字符、字符串以及函数。
  6. 允许嵌套 switch 语句,但这会使程序更复杂且可读性更差。
  7. 您可以使用分号 (;) 代替冒号 (:)。它不会产生任何错误。

PHP Switch 流程图

php if statement flowchart

PHP Switch 示例

示例

立即执行

输出

Number is equal to 20

说明

  • $num 的值为 20
  • switch 语句将 $num 与不同的 case 进行比较
    • case 10: 不匹配。
    • case 20: 找到匹配项!此 case 执行 并打印“Number is equal to 20”。
    • 由于找到匹配项,break 语句阻止了进一步的执行。
  • 由于 case 20 匹配,default case 未执行

带有字符的 PHP Switch 语句

检查元音和辅音的程序

我们将在 switch 表达式中传递一个字符,以检查它是元音还是辅音。如果传递的字符是 A、E、I、O 或 U,它将是元音,否则是辅音。

示例

立即执行

输出

Given character is vowel

说明

  • 变量 $ch 存储要检查的字符。
  • switch 语句针对多个 case 评估 $ch。
  • 如果 $ch 与任何元音 case(a、e、i、o、u、A、E、I、O、U)匹配,它会打印 “Given character is vowel”
  • 如果没有 case 匹配,则执行 default case,打印 “Given character is consonant”
  • break; 语句确保一旦找到匹配项,执行就会退出 switch 块。

带有字符串的 PHP Switch 语句

PHP 允许在 switch 表达式中传递字符串。让我们看下面的课程时长示例,通过在 switch case 语句中传递字符串。

示例

立即执行

输出

B.Tech is 4 years course

说明

  • 代码使用值“B.Tech”初始化变量 $ch,表示课程名称。
  • 使用 switch 语句将 $ch 的值与多个预定义的 case 进行比较。
  • 如果 $ch 匹配一个 case(例如,“BCA”、“BSc”、“B.Tech”或“B.Arch”),它会打印相应的课程时长。
  • 每个 case 都包含一个 break; 语句,以防止执行继续到下一个 case。
  • 如果没有 case 匹配给定的值,则执行 default 块,打印“Wrong Choice”。
  • 与多个 if-else 条件相比,该代码确保了结构化的决策制定,使其更具可读性。

PHP Switch 语句是穿透的

PHP switch 语句是穿透的。这意味着如果在没有 break 语句的情况下找到第一个匹配项,它将执行所有后续语句。

示例

立即执行

输出

Choice c
Choice d
case a, b, c, and d is not found

说明

  • 变量 $ch 被赋值为 'c'。
  • switch 语句检查与给定 case('a'、'b'、'c'、'd')的匹配。
  • 当它在 case 'c': 处找到匹配项时,它执行相应的代码并打印“Choice c”。
  • 但是,在 case 'c': 之后没有 break;,因此执行继续到 case 'd':,打印“Choice d”。
  • 由于 case 'd': 也缺少 break;,执行继续到 default 块,打印“case a, b, c, and d is not found”。

PHP 嵌套 Switch 语句

嵌套 switch 语句是指在一个 switch 语句中包含另一个 switch 语句。有时这会导致混淆。

示例

立即执行

输出

Hyundai Tucson price is 22.39 - 32.07 L.

说明

  • 变量 $car 和 $model 分别设置为“Hyundai”和“Tucson”。
  • switch 语句检查 $car 的值
    • 如果 $car 是“Honda”,它会进入一个嵌套的 switch 来检查车型(“Amaze”、“City”)。
    • 如果 $car 是“Renault”,它会检查“Duster”或“Kwid”。
    • 如果 $car 是“Hyundai”,它会检查“Creta”、“Tucson”或“Xcent”。
  • 由于 $car = “Hyundai” 和 $model = “Tucson”,嵌套 switch 找到“Tucson”并打印“Hyundai Tucson price is 22.39 - 32.07 L.”。
  • 由于 break; 语句,程序在找到匹配项后退出。
  • 如果未找到汽车或车型,则不显示任何输出。

下一主题PHP For 循环