Różnica między przerwą a kontynuowaniem w PHP?


Odpowiedzi:


517

breakkończy pętlę całkowicie, continuepo prostu skraca bieżącą iterację i przechodzi do następnej iteracji.

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

Byłoby to używane w następujący sposób:

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

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

56
Niewłaściwe użycie tych funkcji powoduje to: flickr.com/photos/24973901@N04/2762458387
neokio

7
Uwielbiam tę odpowiedź! Przypomnij mi o zaleceniach WP.org dotyczących warunków Yoda: make.wordpress.org/core/handbook/coding-standards/php/ ...
Bob Gregor

4
po tej odpowiedzi minęło 7 lat, ale warto to powiedzieć. jak w dokumentach php od v4 breaki continuesą takie same w switch. oba wyjścia z przełącznika. aby wyjść z zewnętrznej pętli, jeśli jest do tego lub więcej continue 2.
Amin.Qarabaqi,

@BobGregor Obecnie tę część można znaleźć na make.wordpress.org/core/handbook/best-practices/ ...
Douwe de Haan

@deceze, ten przykład z kodem jest zły. Przypisujesz zmienną, która nie jest nigdzie używana. Sugerowana zmiana była bardziej czytelna.
Tajni

49

break opuszcza pętlę, w której się znajdujesz, continue rozpoczyna się natychmiast od następnego cyklu pętli.

Przykład:

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

wyświetli:

9
7
6

1
+1; to samo, co w zasadzie w każdym innym języku, który używa tych słów kluczowych.
Karl Knechtel

+1; tylko proste wyjaśnienie i dobry przykład, nawet ciasto while(--$i)jest nieco trudne dla początkujących.

@Omeid Zgadzam się, że to trudne ... ale nie byłem pewien składni pętli for-loop w php i
byłem

To świetny przykład!
demuro1

1
Świetny przykład (wiersz echo $ i. „\ N” wymaga na końcu
średnika

16

PRZERWA:

break kończy wykonywanie bieżącej struktury for, foreach, while, do-while lub switch.

KONTYNTYNUJ:

Kontynuuj jest używany w strukturach pętli, aby pominąć resztę bieżącej iteracji pętli i kontynuować wykonywanie przy ocenie warunku, a następnie na początku następnej iteracji.

Więc w zależności od potrzeb możesz zresetować aktualnie wykonywaną pozycję w kodzie do innego poziomu bieżącego zagnieżdżenia.

Zobacz także tutaj szczegółowy opis Przerwij vs Kontynuuj z kilkoma przykładami


14

Dla porządku:

Zauważ, że w PHP instrukcja switch jest uważana za strukturę zapętloną na potrzeby kontynuacji .


Właśnie ugryzła mnie ta „funkcja”. Jak mogę kontynuować pętlę while na podstawie rzeczy wykrytych w przypadku przełącznika?
MattBianco

1
@MattBianco, używasz continue 2w takich przypadkach.
flaviovs

5

break służył do wyjścia z instrukcji pętli, ale kontynuuj po prostu zatrzymaj skrypt pod określonym warunkiem, a następnie kontynuuj pętlę instrukcji aż do końca.

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>";
}

Mam nadzieję, że to może ci pomóc;


4

Break kończy bieżącą pętlę / strukturę kontrolną i przeskakuje do jej końca, bez względu na to, ile razy pętla by się powtórzyła.

Kontynuuj przeskakuje do początku następnej iteracji pętli.


4

„Kontynuuj” jest używany w strukturach pętli, aby pominąć resztę bieżącej iteracji pętli i kontynuować wykonywanie przy ocenie warunku, a następnie na początku następnej iteracji.

'break' kończy wykonywanie bieżącej struktury for, foreach, while, do-while lub switch.

break akceptuje opcjonalny argument liczbowy, który mówi mu, z ilu zagnieżdżonych struktur otaczających ma zostać przerwanych.

Sprawdź poniższe linki:

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

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

Mam nadzieję, że to pomoże..


3

break zatrzyma bieżącą pętlę (lub przekaże liczbę całkowitą, aby powiedzieć, z ilu pętli ma zostać przerwana).

continue zatrzyma bieżącą iterację i rozpocznie następną.


2

breakopuści pętlę, natomiast continuenatychmiast rozpocznie następny cykl pętli.


2

Nie piszę tutaj nic takiego. Tylko notatka z dziennika zmian z podręcznika PHP.


Lista zmian, aby kontynuować

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.

Changelog na przerwę

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.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.