切换多个 case 语句

有人能告诉我如何替换下面的代码吗?

我如何重写代码,以避免重复的块 case 3:{code block A; break;}

switch(i) {
case 1:  {code block A; break;}


case 2:  {code block b; break;}


case 3:  {code block A; break;}


default: {code block default; break;}
}

如何组合案例1和案例3的代码?

100969 次浏览

这种格式在 PHP 文档中显示:

switch (i) {
case 1:
case 3:
code block A;
break;
case 2:
code block B;
break;
default:
code block default;
break;
}

2021年4月19日编辑:

随着 PHP8和新的 match函数的发布,使用 match而不是 switch通常是一个更好的解决方案。

对于上面的例子,与 match等效的是:

$matchResult = match($i) {
1, 3    => // code block A
2       => // code block B
default => // code block default
}

match语句更短,不需要中断并返回一个值,这样就不必多次赋值。

而且,match将表现得像是在做 ===而不是 ==。这可能需要讨论,但事实就是如此。

就像这样

switch(i) {
case 1:
case 3:  {code block A; break;}


case 2:  {code block b; break;}


default: {code block default; break;}
}

差不多

    $i = 10;
switch($i){
case $i == 1 || $i > 3:
echo "working";
break;
case 2:
echo "i = 2";
break;
default:
echo "i = $i";
break;
}