PHPでの中断と継続の違いは?


回答:


517

breakループを完全に終了しcontinue、現在の反復をショートカットして次の反復に進みます。

while ($foo) {   <--------------------┐
    continue;    --- goes back here --┘
    break;       ----- jumps here ----┐
}                                     |
                 <--------------------┘

これは次のように使用されます:

while ($droid = searchDroids()) {
    if ($droid != $theDroidYoureLookingFor) {
        continue; // ..the search with the next droid
    }

    $foundDroidYoureLookingFor = true;
    break; // ..off the search
}

56
これらの関数を誤用すると、次のようになります。flickr.com
24973901 @ N04

7
この答えが大好きです!ヨーダの条件に関するWP.orgの推奨事項を思い出してください:make.wordpress.org/core/handbook/coding-standards/php/…–
ボブグレゴール

4
この回答から7年が経過しましたが、これは言うに値します。以下のようにPHPのドキュメント V4からbreakcontinueで同じですswitch。どちらもスイッチを終了します。forがある場合は外部ループを終了しますcontinue 2
アミンカラバキ2017


@deceze、このコードの例は悪いです。どこでも使用されていない変数を割り当てます。提案された編集がより読みやすくなりました。
Tajni

49

breakは現在のループを終了し、続行はループの次のサイクルから直ちに開始します。

例:

$i = 10;
while (--$i)
{
    if ($i == 8)
    {
        continue;
    }
    if ($i == 5)
    {
        break;
    }
    echo $i . "\n";
}

出力されます:

9
7
6

1
+1; これらのキーワードを使用する他のすべての言語と基本的に同じです。
Karl Knechtel、2010

+1; 単純な説明と良い例ですが、生地でもwhile(--$i)初心者には少し注意が必要です。

@Omeid私は同意します、それはトリッキーであるということです...しかし、phpのforループの構文について確信が持てず、それを調べるのが面倒です
Hinek

これは良い例です!
demuro1 2014年

1
素晴らしい例です(行echo $ iです。 "\ n"には最後にセミカラムが必要です。)
user3563097

16

ブレーク:

breakは、現在のfor、foreach、while、do-while、またはswitch構造の実行を終了します。

継続する:

continueは、ループ構造内で使用され、現在のループ反復の残りをスキップし、条件評価で実行を継続してから、次の反復を開始します。

したがって、必要に応じて、コードで現在実行されている位置を現在のネストの別のレベルにリセットできます。

また、いくつかの例を使用したブレイクとコンティニューの詳細については、こちらをご覧ください。


14

記録のために:

PHPでは、switchステートメントは続行を目的としたループ構造と見なされます。


私はこの「機能」にちょうど噛まれました。スイッチケースで発見されたものに基づいて、whileループを継続するにはどうすればよいですか?
MattBianco 2017年

1
@MattBianco、あなたcontinue 2はそれらの場合に使用します。
flaviovs

5

breakはループステートメントから抜け出すために使用されましたが、特定の条件でスクリプトを停止し、最後に達するまでステートメントをループし続けます。

for($i=0; $i<10; $i++){
    if($i == 5){
        echo "It reach five<br>";
        continue;
    }
    echo $i . "<br>";
}

echo "<hr>";

for($i=0; $i<10; $i++){
    if($i == 5){
         echo "It reach end<br>";
         break;
    }
    echo $i . "<br>";
}

それがあなたを助けることができることを願っています;


4

Breakは、ループが何回繰り返されても、現在のループ/制御構造を終了し、その終わりまでスキップします。

ループの次の反復の先頭にスキップして続行します。


4

'continue'は、ループ構造内で使用され、現在のループ反復の残りをスキップし、条件評価で実行を継続してから、次の反復を開始します。

'break'は、現在のfor、foreach、while、do-while、またはswitch構造の実行を終了します。

breakは、オプションの数値引数を受け入れます。これは、ネストされた囲み構造の数を分割することを示します。

以下のリンクを確認してください。

http://www.php.net/manual/en/control-structures.break.php

http://www.php.net/manual/en/control-structures.continue.php

それが役に立てば幸い..


3

break 現在のループを停止します(または、整数を渡して、そこからいくつのループを解除するかを伝えます)。

continue 現在の反復を停止し、次の反復を開始します。


2

breakループを終了し、ループcontinueの次のサイクルをすぐに開始します。


2

ここでは同じことは何も書いていない。PHPマニュアルの変更履歴のメモ。


続行の変更ログ

Version Description

7.0.0 - continue outside of a loop or switch control structure is now detected at compile-time instead of run-time as before, and triggers an E_COMPILE_ERROR.

5.4.0   continue 0; is no longer valid. In previous versions it was interpreted the same as continue 1;.

5.4.0   Removed the ability to pass in variables (e.g., $num = 2; continue $num;) as the numerical argument.

休憩の変更ログ

Version Description

7.0.0   break outside of a loop or switch control structure is now detected at compile-time instead of run-time as before, and triggers an E_COMPILE_ERROR.

5.4.0   break 0; is no longer valid. In previous versions it was interpreted the same as break 1;.

5.4.0   Removed the ability to pass in variables (e.g., $num = 2; break $num;) as the numerical argument.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.