Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.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
Javascript或PHP中是否有用于循环的“超级中断”?_Javascript_Php_For Loop_Break - Fatal编程技术网

Javascript或PHP中是否有用于循环的“超级中断”?

Javascript或PHP中是否有用于循环的“超级中断”?,javascript,php,for-loop,break,Javascript,Php,For Loop,Break,在我工作的许多项目中,我发现我已经嵌套了for循环,我将重点关注PHP实现,但也适用于采用这种通用形式的javascript: $array1 = array(........); $count1 = count($array1); $invalidState = false;//An invalid state will be looked for in the innermost loop, and if found, break all the loops for($i = 0; $i

在我工作的许多项目中,我发现我已经嵌套了for循环,我将重点关注PHP实现,但也适用于采用这种通用形式的javascript:

$array1 = array(........);
$count1 = count($array1);

$invalidState = false;//An invalid state will be looked for in the innermost loop, and if found, break all the loops

for($i = 0; $i < $count1; $i++) {
    //parsing, then another loop
    $array2 = explode("needle", $array1[$i]);
    $count2 = count($array2);
    for($j = 0; $j < $count2; $j++) {
        //parsing, then sometimes even another another loop
        $array3 = explode("different-needle", $array2[$j]);
        $count3 = count($array3);
        for($k = 0; $k < $count3; $k++) {
            //check for an invalid state in $array3[$k], and break if invalid state = true; 
        }
        if ($invalidState) break;
    }
    if ($invalidState) break;
}
重申一下,如果在最里面的循环中发现无效状态,那么所有循环都应该中断。但据我所知,要从所有循环中断,我必须在本例中设置一个变量$invalidState,并在所有外部循环中检查它,如果为真,则中断


是否存在任何类型的超级中断,如果最内层循环中满足某个条件,则所有外部循环都将被中断?

我建议将外部循环设置为自己的函数,并在循环的中心显式返回到所有嵌套循环的硬中断。

我建议将外部循环设置为自己的函数,并显式返回到循环的中心,以从所有嵌套循环中硬中断。

可能最容易将循环包装在函数中,当您想使用超级中断时,只需使用return。

可能最容易将循环包装在函数中,当您想使用超级中断时,只需使用return。

您可以使用return此目的

您可以使用return来实现此目的

是的,请尝试以下方法:

for($i = 0; $i < $count1; $i++) {
    //parsing, then another loop
    $array2 = explode("needle", $array1[$i]);
    $count2 = count($array2);
    for($j = 0; $j < $count2; $j++) {
        //parsing, then sometimes even another another loop
        $array3 = explode("different-needle", $array2[$j]);
        $count3 = count($array3);
        for($k = 0; $k < $count3; $k++) {
            break 3; 

    }
    if ($invalidState) break;
}
if ($invalidState) break;
}
当您写入break n时,您正在中断n个嵌套循环。 但是,您不能破坏$foo,因为此功能最近已被删除:

是的,试试这个:

for($i = 0; $i < $count1; $i++) {
    //parsing, then another loop
    $array2 = explode("needle", $array1[$i]);
    $count2 = count($array2);
    for($j = 0; $j < $count2; $j++) {
        //parsing, then sometimes even another another loop
        $array3 = explode("different-needle", $array2[$j]);
        $count3 = count($array3);
        for($k = 0; $k < $count3; $k++) {
            break 3; 

    }
    if ($invalidState) break;
}
if ($invalidState) break;
}
当您写入break n时,您正在中断n个嵌套循环。 但是,您不能破坏$foo,因为此功能最近已被删除:


你应该考虑这个问题:

break 3; //Breaks 3 levels, so breaks outermost foreach

你应该考虑这个问题:

break 3; //Breaks 3 levels, so breaks outermost foreach

是的,你应该检查这个:为了补充@luigonsec的评论,。我想这就是你想要的:我更喜欢击球突破或队长突破,但超级突破是好的too@JaromandaX它是一只鸟?是飞机吗?不这是超级突破!是的,你应该检查这个:为了补充@luigonsec的评论,。我想这就是你想要的:我更喜欢击球突破或队长突破,但超级突破是好的too@JaromandaX它是一只鸟?是飞机吗?不这是超级突破!这应该被认为是答案,因为它确实给出了响应,而不是一个解决方法。事实上,break n是从PHP 5.4中删除的,所以这个示例将在PHP 5.4+上抛出语法错误。您给我的链接@Martin:5.4.0-删除了传入变量的能力,例如,$num=2;打破$num;作为数值论证。但是break 3似乎仍在工作。你说得对,它只与break$var语法有关。@Martin谢谢你的观察,我学到了一些新东西!这应该被认为是答案,因为它确实给出了响应,而不是一个解决方法。事实上,break n是从PHP 5.4中删除的,所以这个示例将在PHP 5.4+上抛出语法错误。您给我的链接@Martin:5.4.0-删除了传入变量的能力,例如,$num=2;打破$num;作为数值论证。但是break 3似乎仍在工作。你说得对,它只与break$var语法有关。@Martin谢谢你的观察,我学到了一些新东西!应打破3;根据@luigonsec的回答,应该是break 3;根据@luigonsec的回答。