首页 > 编程笔记 > PHP笔记 阅读:13

PHP switch语句的用法(附带实例)

PHP 中的 switch 语句结构可以在条件相同时,对不同的结果分别执行操作。

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 变量的值来观察运行结果。

相关文章