例如,我必须基于一个值执行多组指令。
$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;
}
我从上面的代码中期望的是,它应该基于传递的值来执行多种情况,变量$ value包含AA
作为值,因此我希望它能够同时执行这两项
case 'AA'
和case 'CC' || 'AA'
因此它应该打印出value equals 1 value equals 3
,但是它不会以我只获得value equals 1
作为输出的方式执行它。如果我从语句中删除continue
,它将执行所有三个cases
,这在逻辑上是错误的。 PHP的switch语句是否支持基于单个值执行多种情况?有什么解决方法吗?
谢谢..
[缺少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;
}
switch
语句在case块中需要文字。请使用if
语句。
您可以使用其他种类的循环来遍历iterate
的值,然后使用IF
进行比较。在switch
情况下,无法进行比较/条件检查。
完成您想要做的事情的一种方法是这样的(注意使用了IF):
$value = 'AA';
switch($value)
{
case ('AA'):
echo "value equals 1<br />";
case ('BB'):
if ($value == 'BB'){
echo "value equals 2<br />";
}
case (('AA') || ('CC')):
echo "value equals 3<br />";
break;
}
输出:
value equals 1
value equals 3
注意:-上面的解决方案虽然输出了您需要的东西,但它不是正确的解决方案,但我建议您避免使用,但它并不正确。您可以使用非切换/案例替代方案轻松解决您的需求。
解决方法是使用一组if
和else if
语句。 case
语句中的条件不评估。
if($value == 'AA') {
echo "value equals 1";
}
else if($value == 'CC') {
echo "value equals 3";
}
else { //Or else if($value == 'BB') if you might add more at some point
echo "value equals 2";
}
[continue
(或break
语句)结束每个case
。如果省略,执行将一直执行到下一个case
(这就是在您的情况下全部三个都执行的原因-它贯穿所有这些,直到结尾。如果遇到continue
或break
在已经掉入的case
中,执行将在那里停止)。
阅读文档后,我发现switch语句可以包含多个判断为true的情况,但不能包含多个判断为true的情况。
此外,文档指出break;
范围内的continue;
和switch
是等效的。
如果忽略所有break;
和continue;
语句,则会看到它们全部打印出来,而不管它们是否匹配。对于这个难题,您将不得不使用不太酷的if / else / ifelse语句。
您需要这样编写代码当我们检查多个条件时,我们需要在其中添加条件语句。
$value = 'AA';
switch ($value) {
case 'AA':
echo "value equals 1";
continue;
case 'BB':
echo "value equals 2";
continue;
case $value == 'CC' || $value=='AA':
echo "value equals 3";
break;
}
或者您可以简单地以这种格式编写代码(为此设置两种不同的情况)
$value = 'AA';
switch ($value) {
case 'AA':
echo "value equals 1";
continue;
case 'BB':
echo "value equals 2";
continue;
case 'CC':
case 'AA':
echo "value equals 3";
break;
}
$value = 'AA';
switch ($value) {
case 'AA':
echo "value equals 1";
echo "value equals 3";
break;
case 'BB':
echo "value equals 2";
break;
case 'CC':
echo "value equals 3";
break;
}