PHP switch语句的用法(附带实例)
PHP 中的 switch 语句结构可以在条件相同时,对不同的结果分别执行操作。
switch 语句的应用格式如下:
switch 语句结构中,case 语句块可以对应和处理多个不同的值;default 语句块也可以不定义,但如果定义,它只能出现一次,用于处理 case 语句块没有处理的情况。
下面的代码演示了 switch 语句结构的使用:
需要注意的是,每个 case 语句块都使用 break 语句中断,否则会向下贯穿,下面的代码演示了这一特性:
随后的情况也是这样的,当 $month 变量的值是 4、6、9 时也会向下贯穿,直到 $month 变量为 11 时才将 $daysInMonth 变量的值设置为 30,并使用 break 语句结束 switch 语句结构。当 $month 变量等于 2 时,会根据是否为闰年来给 $daysInMonth 变量赋值。
请注意,本例并没有使用 default 语句块处理其他情况,这是有前提条件的,因为 $daysInMonth 变量的初始值已经被赋予 0,所以,如果月份数据指定不正确,它的值就是 0;对于没有初始值或默认值的情况,应使用 default 语句块处理特殊情况,避免不可预知情况造成的程序崩溃。
页面显示结果如下图所示:
可以修改 $year、$month 和 $daysInMonth 变量的值来观察运行结果。
switch 语句的应用格式如下:
switch(<表达式>) { case <值1>: <语句块1> break; case <值2>: <语句块2> break; default: <语句 n> break; }其中,当 <表达式> 的值是 <值1> 时执行 <语句块1>,<表达式> 的值是 <值2> 时执行 <语句块2>,以此类推;当没有对应的值时执行 <语句块n>。
switch 语句结构中,case 语句块可以对应和处理多个不同的值;default 语句块也可以不定义,但如果定义,它只能出现一次,用于处理 case 语句块没有处理的情况。
下面的代码演示了 switch 语句结构的使用:
<?php $color = "red"; switch($color) { case "red": echo "红色"; break; case "green": echo "绿色"; break; case "blue": echo "蓝色"; break; default: echo "未知颜色"; break; } ?>执行代码会显示“红色”,可以修改 $color 变量的值来观察执行结果。
需要注意的是,每个 case 语句块都使用 break 语句中断,否则会向下贯穿,下面的代码演示了这一特性:
<?php $year = 2020; $month = 2; $daysInMonth = 0; switch($month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: $daysInMonth = 31; break; case 4: case 6: case 9: case 11: $daysInMonth = 30; break; case 2: if ($year % 400 == 0 || ($year % 100 != 0 && $year % 4 == 0)) $daysInMonth = 29; else $daysInMonth = 28; break; } echo "{$year} 年 {$month} 月有 {$daysInMonth} 天 "; ?>代码中,当 $month 变量的值是 1、3、5、7、8、10 时没有处理代码,也没有 break 语句中断,这些 case 块会向下贯穿,直到 $month 为 12 时才将 $daysInMonth 变量的值设置为 31,并使用 break 语句结束 switch 语句结构。
随后的情况也是这样的,当 $month 变量的值是 4、6、9 时也会向下贯穿,直到 $month 变量为 11 时才将 $daysInMonth 变量的值设置为 30,并使用 break 语句结束 switch 语句结构。当 $month 变量等于 2 时,会根据是否为闰年来给 $daysInMonth 变量赋值。
请注意,本例并没有使用 default 语句块处理其他情况,这是有前提条件的,因为 $daysInMonth 变量的初始值已经被赋予 0,所以,如果月份数据指定不正确,它的值就是 0;对于没有初始值或默认值的情况,应使用 default 语句块处理特殊情况,避免不可预知情况造成的程序崩溃。
页面显示结果如下图所示:

可以修改 $year、$month 和 $daysInMonth 变量的值来观察运行结果。