使用PHP switch语句执行多个case

Ibr*_*mar 6 php switch-statement

例如,我必须根据值执行多组指令.

$value = 'AA';
switch ($value) {
    case 'AA':
        echo "value equals  1";
    continue;
    case 'BB':
        echo "value equals 2";
    continue;
    case 'CC' || 'AA':
        echo "value equals 3";
    break;
}
Run Code Online (Sandbox Code Playgroud)

我期望从上面的代码是它应该根据传递的值执行多个案例,变量$ value包含AA作为值因此我期望它执行两者

case 'AA'
case 'CC' || 'AA'

所以它应该打印出来value equals 1 value equals 3然而它不执行它我只得到value equals 1输出.如果我continue从语句中删除它执行cases逻辑错误的所有三个.PHP的switch语句是否支持基于单个值执行多个案例?这有什么解决方法吗?

谢谢..

Sau*_*aul 12

当a break丢失时,switch语句将启用到下一个条件:

$value = 'AA';
switch ($value) {
    case 'AA':
        echo "value equals  1"; // this case has no break, enables fallthrough
    case 'CC':
        echo "value equals 3"; // this one executes for both AA and CC
    break;
    case 'BB':
        echo "value equals 2";
    break;
}
Run Code Online (Sandbox Code Playgroud)

  • @Ibrahim Azhar Armar:实际上@kapep无意中指出了我之前更新引入的一个错误.`||`-ing两个非零文字总是会产生`true`,因此它匹配每个非零`$ value`.这使得表达式毫无意义,可以替换"case"AA'|| 'CC'与`case true`并且具有相同的行为.无论如何,我回滚了之前的变化.通过多次执行只能依赖于无故障情况的**排序**.值表达式仅用作初始入口点. (3认同)