Sae*_*kar 3 php switch-statement
我有一个函数可以根据输入的值返回响应。代码是这样的
$a = 5;
switch ($a) {
case 1: $b = 1;
break;
case 2 || 3 || 4: $b = 2;
break;
case 5: $b = 3;
break;
}
return $b;
Run Code Online (Sandbox Code Playgroud)
这将返回值2而不是3在代码中可以清楚地看到的值。这是怎么发生的?
Qir*_*rel 10
您使用的案例错误。您不能||在案例中间使用2 或 3 或 4,但您可以一个接一个地列出多个案例,而无需break在它们之间使用 aa来执行相同的操作。
$a = 5;
switch ($a) {
case 1:
$b = 1;
break;
case 2:
case 3:
case 4:
$b = 2;
break;
case 5:
$b = 3;
break;
}
return $b;
Run Code Online (Sandbox Code Playgroud)
您的原始代码发生的情况是,您获得case 2 || 3 || 4了 的等价物case (2 || 3 || 4):,它变成了case true:。在||操作者进行比较的任2,3和4的真实性-这是所有非零值,所以表达式评估为真。
您还应该注意,$b当$a不是 1、2、3、4 或 5 之一时,它是未定义的。因此,您应该default在 switch 语句中使用case,或者$b在 switch 之前声明。