Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 继续开关中的案例_Php_Switch Statement_Continue - Fatal编程技术网

Php 继续开关中的案例

Php 继续开关中的案例,php,switch-statement,continue,Php,Switch Statement,Continue,我有以下代码: switch(true) { case (something): { break; } case (something2): { break; } case (something3): { break; } } 另外,switch语句必须检查其中一个case给出的TRUE,这不是问题,问题是,我现

我有以下代码:

switch(true)
    {
    case (something):
        {
        break;
        }
    case (something2):
        {
        break;
        }
    case (something3):
        {
        break;
        }
    }
另外,
switch
语句必须检查其中一个case给出的
TRUE
,这不是问题,问题是,我现在有一个case,
case内部。。。中断
检查完其他数据后,我想选择另一个
开关箱
,就是跟在他后面的那个。 我尝试过这样做:

switch(true)
    {
    case (something):
        {
        break;
        }
    case (something2):
        {
        if(check)
            {
            something3 = true;
            continue;
            }
        break;
        }
    case (something3):
        {
        break;
        }
    }
但是PHP不希望进入
案例(something3):
它破坏了完整的
开关
语句。如何传递一个案例的其余代码并跳转到下一个案例?

这就是所谓的“失败”。尝试用这个概念组织代码

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;
}
试试这个:

switch(true) {
    case (something):
    {
        break;
    {
    case (something2):
    {
        if (!check) {
            break;
        }
    }
    case (something3):
    {
        break;
    }
}
使用您的代码:

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

这将涉及到一些案例2并运行您的检查。如果您的检查通过,那么它不会运行break语句,该语句允许切换到“fall-through”,并执行某些操作3。

我遇到过类似的情况,我提出了一个解决方案,在您的情况下,该解决方案如下所示:

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

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

是否将
something3
始终放在
something2
之后?
switch(true)
{
    case (something):
    {
        break;
    }
    case (something2):
    {
        if(!check)
        {
            break;
        }
    }
    case (something3):
    {
        break;
    }
}