Разница между разрывом и продолжением в 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/photos/24973901@N04/2762458387
neokio

7
Люблю этот ответ! Напомните мне о рекомендации WP.org относительно условий Yoda: make.wordpress.org/core/handbook/coding-standards/php/…
Боб Грегор

4
через 7 лет после этого ответа, но стоит сказать это. как в документах php от v4 breakи continueтакие же в switch. оба выхода из выключателя. выйти из внешнего цикла, если есть или так использовать continue 2.
Amin.Qarabaqi

@BobGregor В настоящее время эту часть можно найти по адресу make.wordpress.org/core/handbook/best-practices/…
Douwe de Haan

@deceze, этот пример с кодом плохой. Вы назначаете переменную, которая нигде не используется. Предлагаемое редактирование было более читабельным.
Тайни

49

break выходит из цикла, в котором вы находитесь, продолжить немедленно начинает следующий цикл цикла.

Пример:

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

будет выводить:

9
7
6

1
+1; так же, как в основном на любом другом языке, который использует эти ключевые слова.
Карл Кнехтель

+1; просто простое объяснение и хороший пример, даже тесто while(--$i)немного сложно для новичков.

@Omeid Я согласен, что это сложно ... но я не был уверен в синтаксисе цикла for в php и ленился его искать
Hinek

Это отличный пример!
demuro1

1
Отличный пример. (Строка echo $ i. "\ N" в конце
нужна точка с запятой

16

ПЕРЕРЫВ:

break завершает выполнение текущей структуры for, foreach, while, do-while или switch.

ПРОДОЛЖАТЬ:

continue используется в структурах цикла для пропуска оставшейся части итерации текущего цикла и продолжения выполнения при оценке состояния, а затем в начале следующей итерации.

Таким образом, в зависимости от ваших потребностей, вы можете сбросить позицию, выполняемую в настоящее время в вашем коде, на другой уровень текущей вложенности.

Также, смотрите здесь для художественной детализации Break vs Continue с рядом примеров


14

Для записи:

Обратите внимание, что в PHP оператор switch считается циклической структурой для целей continue .


Меня просто укусила эта «фича». Как я могу продолжить цикл while, основываясь на вещах, обнаруженных в корпусе коммутатора?
MattBianco

1
@MattBianco, вы используете continue 2в этих случаях.
flaviovs

5

Прерывание используется для выхода из оператора цикла, но продолжайте просто останавливать сценарий при определенных условиях, а затем продолжайте выполнение цикла до достижения конца.

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

Прерывание завершает текущую петлю / управляющую структуру и пропускает ее до конца, независимо от того, сколько еще раз цикл повторился бы.

Продолжить пропускает к началу следующей итерации цикла.


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.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.