我有一个开关,在极少数情况下我可能需要跳到另一个案例,我正在寻找类似的东西:
switch($var){
case: 'a'
if($otherVar != 0){ // Any conditional, it is irrelevant
//Go to case y;
}else{
//case a
}
break;
case 'b':
//case b code
break;
case 'c':
if($otherVar2 != 0){ // Any conditional, it is irrelevant
//Go to case y;
}else{
//case c
}
break;
.
.
.
case 'x':
//case x code
break;
case 'y':
//case y code
break;
default:
// more code
break;
}
是否有任何GOTO选项,我在某处找到它但是找不到它,或者可能是另一种解决方案?感谢。
答案 0 :(得分:19)
您需要PHP 5.3或更高版本,但在此处:
以下是http://php.net/manual/en/control-structures.goto.php
中的转到功能<?php
$var = 'x';
$otherVar = 1;
switch($var){
case 'x':
if($otherVar != 0){ // Any conditional, it is irrelevant
goto y;
}else{
//case X
}
break;
case 'y':
y:
echo 'reached Y';
break;
default:
// more code
break;
}
?>
答案 1 :(得分:6)
基于额外条件级联(或不级联)怎么样?
case 'x' :
if ($otherVar == 0) {
break;
}
case 'y' :
答案 2 :(得分:1)
不是在switch-case中使用任何技巧,而是可以采用更好的逻辑。
function func_y() {
...
}
switch($var){
case: 'x'
if($otherVar != 0){ // Any conditional, it is irrelevant
func_y();
}else{
//case X
}
break;
case 'y':
func_y();
break;
default:
// more code
break;
}