继续开关箱

时间:2013-05-23 21:27:36

标签: php switch-statement continue

我有以下代码:

switch(true)
    {
    case (something):
        {
        break;
        }
    case (something2):
        {
        break;
        }
    case (something3):
        {
        break;
        }
    }

同样,switch语句必须检查其中一个案例给出了TRUE,这不是问题,问题是,我现在有一个案例,在case ... break;内部在检查其他数据后,我希望选择跟随他的其他switch-case。 我试过这样做:

switch(true)
    {
    case (something):
        {
        break;
        }
    case (something2):
        {
        if(check)
            {
            something3 = true;
            continue;
            }
        break;
        }
    case (something3):
        {
        break;
        }
    }

但是PHP不希望进入case (something3):它打破完整的switch语句。我如何能够传递一个案例的其余代码并跳转到下一个案例?

5 个答案:

答案 0 :(得分:7)

这就是所谓的“堕落”。尝试使用此概念组织代码。

switch (foo) {
  // fall case 1 through 2
  case 1:
  case 2:
    // something runs for case 1 and 2
    break;
  case 3:
    // something runs for case 3
    break;
}

答案 1 :(得分:2)

使用您的代码:

switch(true) 
{
    case (something):
    {
        break;
    }
    case (something2):
    {
        if(check) {
            something3 = true;
        }
        else {
            break;
        }
    } 
    case (something3):
    {
        break;
    }
}

这将得到案例2并运行您的支票。如果您的支票通过,那么它不会运行break语句,该语句允许交换机“通过”并执行某些操作。

答案 2 :(得分:1)

case (something2):
    {
    if(!check)
    {
        break;
    }
}

答案 3 :(得分:0)

试试这个:

switch(true) {
    case (something):
    {
        break;
    {
    case (something2):
    {
        if (!check) {
            break;
        }
    }
    case (something3):
    {
        break;
    }
}

答案 4 :(得分:0)

我有类似的情况,我想出了一个解决方案,在你的情况下会是这样的:

switch(true)
{
    case (something):
    {
        break;
    }
    case (something2):
    {
        if(!check)
        {
            break;
        }
    }
    case (something3):
    {
        break;
    }
}

您看到我们检查是否应该忽略当前的情况,而不是检查条件以转到下一个案例。