php switch语句多个值匹配同一代码块的实现


在PHP中,`switch` 语句本身不直接支持多个值匹配同一代码块的情况,但是你可以通过几种方法来实现类似的效果。一个常用的方法是使用 `case` 语句的“穿透”特性(fall-through),即当某个 `case` 没有 `break` 语句时,程序会继续执行下一个 `case` 的代码,直到遇到 `break` 或 `switch` 结束。

下面是一个例子,展示了如何使用这种方法来实现多个值匹配同一代码块:


<?php
$number = 2;

switch ($number) {
    case 1:
    case 2:
    case 3:
        // 当 $number 是 1, 2, 或 3 时,都会执行这里的代码
        echo "Number is 1, 2, or 3";
        break; // 只需要在最后一个要穿透的case后使用break
    case 4:
    case 5:
        // 当 $number 是 4 或 5 时,会执行这里的代码
        echo "Number is 4 or 5";
        break;
    default:
        // 如果 $number 不是上述任何一个值,则执行这里的代码
        echo "Number is not 1, 2, 3, 4, or 5";
}
?>

在这个例子中,如果 `$number` 是 1、2 或 3,程序会输出 `"Number is 1, 2, or 3"`。这是因为这些 `case` 都没有 `break` 语句,所以它们会“穿透”到第一个有 `break` 语句的 `case`(或 `switch` 的末尾)为止。

请注意,虽然这种方法可以实现你的需求,但在某些情况下可能会使代码的可读性降低。如果可能的话,考虑使用 `if` 语句或其他逻辑来清晰地表达你的意图。