web-dev-qa-db-ja.com

2を続行し、switchステートメントで中断します

PHPが初めてで、以下のコードをオンラインで見ました。continue 2breakを一緒にswitch/caseステートメント。どういう意味ですか?

foreach ( $elements as &$element ) {

    switch ($element['type']) {
        case a :
            if (condition1)
                continue 2; 
            break;

        case b :
            if (condition2)
                continue 2;
            break;
    }

    // remaining code here, inside loop but outside switch statement
}
19

continue 2は、2レベル前の構造の次の反復(foreach)に直接スキップします。 breakbreak 1と同等)は、switchステートメントを終了するだけです。

示したコードの動作は次のとおりです。

$elementsをループします。 $elementがタイプ "a"でcondition1が満たされている場合、またはタイプ "b"でcondition2が満たされている場合は、次の$elementにスキップします。それ以外の場合は、次の$elementに移動する前に何らかのアクションを実行します。


PHP.net:continue から:

continueは、オプションの数値引数を受け入れ、最後までスキップするループのレベル数を指定します。デフォルト値は1であるため、現在のループの終わりまでスキップします。

PHP.net:switch から

PHPは、switchブロックの最後まで、またはbreakステートメントが最初に検出されるまで、ステートメントを実行し続けます。

ループ内にスイッチがあり、外側のループの次の反復に継続したい場合は、continue 2を使用します。

27
showdev

continueは、オプションの数値引数を受け入れます。これは、最後までスキップするループのレベル数を指示します。デフォルト値は1であるため、現在のループの終わりまでスキップします。

ソース: http://php.net/manual/en/control-structures.continue.php

2
Apul Gupta

continueとbreakは、何かが起こるのを止めるという点で似ています。

続行の場合、中括弧の後は停止しますが、ループは停止しません。 switchステートメントは、このステートメントから抜け出し、次のステートメントに進みます。

ブレークの場合、ループ全体の継続を停止し、そこでループを終了します。

1
Edward Manda