PHP:是否可以在交换机内从一个案例跳转到另一个案例?

mul*_*axp 10 php switch-statement

我有一个开关,在极少数情况下我可能需要跳到另一个案例,我正在寻找这样的东西:

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;
}
Run Code Online (Sandbox Code Playgroud)

有没有任何GOTO选项,我在某处可以找到它,但找不到它,或者可能是另一种解决方案?谢谢.

fra*_*ler 21

你需要PHP 5.3或更高版本,但在这里:

以下是来自http://php.net/manual/en/control-structures.goto.phpgoto功能

<?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;
}

?>
Run Code Online (Sandbox Code Playgroud)

  • 当_谨慎_且_非常小心_使用时,`goto` 会被低估。我自己就曾经使用过这种方法。它效果很好,所以为什么不呢!+1 (2认同)

Phi*_*hil 7

基于额外条件级联(或不级联)怎么样?

case 'x' :
    if ($otherVar == 0) {
        break;
    }
case 'y' :
Run Code Online (Sandbox Code Playgroud)

  • 这是一个不错的选择,但如果我正在寻找的案例不是下一个而是 n 之后的案例,我需要在每个案例上添加该条件。 (2认同)