Різниця між перервою та продовженням у 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.
Амін.Карабакі

@BobGregor Наразі цю частину можна знайти на make.wordpress.org/core/handbook/best-practices/…
Дуве де Хаан

@deceze, цей приклад з кодом поганий. Ви призначаєте змінну, яка ніде не використовується. Пропонована редакція була більш читаною.
Тажні

49

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

Приклад:

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

виведе:

9
7
6

1
+1; те саме, що і в основному в будь-якій іншій мові, яка використовує ці ключові слова.
Карл Кнечтел

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

@Omeid Я згоден, що це хитро ... але я не був впевнений у синтаксисі php для for-loop та ледачому шукати його
Hinek

Це чудовий приклад!
demuro1

1
Чудовий приклад. (Рядок відлуння $ i. "\ N" потрібна півкільця в кінці.)
user3563097

16

ПЕРЕРВА:

break завершує виконання струму для, foreach, while, do-while або switch структура.

ПРОДОДЖЕНО:

Продовження використовується в циклічних структурах, щоб пропустити решту поточної ітерації циклу і продовжити виконання при оцінці стану, а потім початку наступної ітерації.

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

Крім того, дивіться сюди мистецьку деталізацію "Перерва проти" - "Продовжити" з низкою прикладів


14

Для запису:

Зауважте, що в PHP оператор перемикання вважається циклічною структурою для цілей продовження .


Мене просто вкусила ця "особливість". Як я можу продовжити цикл часу на основі речей, виявлених у корпусі комутатора?
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

'продовжити' використовується в циклічних структурах, щоб пропустити решту поточної ітерації циклу і продовжити виконання при оцінці стану, а потім початку наступної ітерації.

'break' завершує виконання струму для, 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.