switch语句多个变量赋值而不重复

use*_*368 2 php switch-statement

假设我有一个这样的switch语句:

switch ($var)
{
    case 'A':
       $a = 1;
       break;

    case 'B':
       $a = 1;
       $b = 2;
       break;

    case 'C':
       $a = 1;
       $b = 2;
       $c = 3;
       break;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法可以构造那个switch语句来重复$a = 1$b = 2出现一次?

Joh*_*nde 8

只需还原case语句的顺序并删除break语句.

switch ($var)
{
    case 'C':
       $c = 3;
    case 'B':
       $b = 2;
    case 'A':
       $a = 1;
       break;
}
Run Code Online (Sandbox Code Playgroud)

手册:

了解switch语句的执行方式以避免错误非常重要.switch语句逐行执行(实际上是逐个语句).一开始,没有代码被执行.只有当找到的case语句的值与switch表达式的值匹配时,PHP才会开始执行语句.PHP继续执行语句,直到switch块结束,或者第一次看到break语句.如果你不在case语句列表的末尾写一个break语句,PHP将继续执行以下情况的语句.


Nie*_*sol 6

像这样:

switch($var) {
    case 'C':
        $c = 3;
        // fallthrough
    case 'B':
        $b = 2;
        // fallthrough
    case 'A':
        $a = 1;
}
Run Code Online (Sandbox Code Playgroud)

评论当然是可选的,但我希望将它们留在那里以确保我不会忘记缺乏a break是故意的.