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

169

Jaka jest różnica między breaki continuew PHP?

powtac
źródło

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
}
zamrozić
źródło
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
Hinek
źródło
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

SW4
źródło
14

Dla porządku:

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

Igor Parra
źródło
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;

Joko Wandiro
źródło
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.

DGH
źródło
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..

Mahendra Liya
źródło
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ą.

Alex
źródło
2

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

cspolton
źródło
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.
Muhammed Shihabudeen Labba A
źródło