2

我有以下代码:

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声明。我如何通过一个案例的其余代码并跳转到下一个案例?

4

5 回答 5

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;
}
于 2013-05-23T21:29:39.380 回答
2

使用您的代码:

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

这将得到 case something2 并运行您的检查。如果您的检查通过,那么它不会运行允许开关“通过”并执行某些操作的 break 语句。

于 2013-05-23T21:35:00.443 回答
1
case (something2):
    {
    if(!check)
    {
        break;
    }
}
于 2013-05-23T21:30:24.493 回答
0

尝试这个:

switch(true) {
    case (something):
    {
        break;
    {
    case (something2):
    {
        if (!check) {
            break;
        }
    }
    case (something3):
    {
        break;
    }
}
于 2013-05-23T21:32:52.447 回答
0

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

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

您会看到,我们没有检查进入下一个案例的条件,而是检查了是否应该忽略当前案例。

于 2017-05-02T16:55:33.927 回答