PHP Break i Continue | pomoc

W tym artykule poznasz słowa kluczowe break oraz continue.

Dowiesz się, jak posługiwać się nimi przy pracy z pętlami oraz zobaczysz kilka praktycznych przykładów ich zastosowania w PHP.

Zapraszam!

Break: przerwanie wykonywania pętli

Czasami podczas wykonywania danej pętli potrzebujesz przerwać jej działanie.

Być może wśród wszystkich elementów szukasz kilku konkretnych. Gdy je już znajdziesz, nie ma potrzeby dalej iterować po pozostałej części. Wtedy możesz posłużyć się poleceniem break (z ang. przerwij) które natychmiast przerwie wykonywaną pętlę.

Zobacz prosty przykład dla przerwania pętli (na przykładzie pętli for):

$data = array(1, 2, 3, 1, 2, -3, 2, 2, 1, 3, 4, 5);
$sum = 0;
for ($i = 0; $i < count($data); $i++)
{
    if ($data[$i] < 0)
    {
        break;
    }

    $sum += $data[$i];
}

Powyższy kod ma za zadanie zsumować wszystkie elementy tablicy, dopóki nie natrafi na liczbę ujemną. Gdy trafi na wartość ujemną, ma przerwać dalsze sumowanie i przekazać wynik w postaci sumy policzonej do tej pory.

W zmiennej $data mamy tablicę, która jest wypełniona wartościami liczbowymi. Do zmiennej $sum będziemy dodawać kolejne wartości z tablicy, dopóki nie trafimy na wartość ujemną.

Teraz pora na pętlę for, która przechodzi po zmiennej $data, element po elemencie. Do policzenia ilości elementów w tablicy użyliśmy polecenia count (zobacz w oficjalnej dokumentacji) które zwróci liczbę wszystkich elementów w tablicy. Na początku każdego przebiegu pętli następuje sprawdzenie, czy ten konkretny element jest ujemny. Jeśli tak, przerywamy wykonywanie pętli poleceniem break. Jeśli wartość wynosi 0 lub więcej, dodajemy ją do zmiennej $sum.

W ten sposób, po przerwaniu wykonywania pętli for, sumę zliczonych elementów mamy zachowaną w zmiennej $sum.

Continue: przejdź do kolejnego przebiegu

Poleceniem continue również przerywasz wykonywanie pętli, jednak tylko tego jednego, konkretnego przebiegu. Cała pętla wykonuje się dalej, aż do wyczerpania wszystkich zaplanowanych przebiegów.

Weźmy ten sam przykład, co przed momentem.

Załóżmy, że chcemy zsumować wszystkie elementy nieujemne z tablicy. Stąd, po natrafieniu na liczbę ujemną, powinniśmy ją zignorować i przejść dalej (nie przerywając całej pętli).

Zobacz, jak osiągnąć taki efekt z wykorzystaniem słówka continue:

$data = array(1, 2, 3, 1, 2, -3, 2, 2, 1, 3, 4, 5);
$sum = 0;
for ($i = 0; $i < count($data); $i++)
{
    if ($data[$i] < 0)
    {
        continue;
    }

    $sum += $data[$i];
}

W ten sposób, gdy algorytm natrafi na liczbę ujemną, po prostu przejdzie do następnego przebiegu. Nie wykona się instrukcja, która dodaje wartość do zmiennej $sum. Dzięki temu uzyskamy finalny efekt w postaci sumy wyłącznie nieujemnych (dodatnich i zero) elementów.

Break i continue w jednej pętli

Technicznie, nic nie stoi na przeszkodzie, by połączyć break i continue w jednej pętli.

Możesz też dodawać te instrukcje więcej niż tylko jeden raz w kodzie pętli.

Zobacz bardziej zaawansowany przykład:

$data = array(1, 2, -3, -1, 2, -3, 2, 2, 1, 3, 4, 5, -2, 4);
$sum = 0;
$negativeNumbers = 0;

for ($i = 0; $i < count($data); $i++)
{
    if ($data[$i] < 0)
    {
        $negativeNumbers++;

        if ($negativeNumbers > 2)
        {
            break;
        }

        continue;
    }

    $sum += $data[$i];

    if ($sum > 10)
    {
        break;
    }
}

Tutaj mamy nieco bardziej zaawansowany algorytm.

Jeśli natrafimy na liczbę ujemną, to ją pomijamy i przechodzimy dalej. Jednak, jeśli w źródle danych znajdą się przynajmniej 3 liczby ujemne, przerywamy zliczanie sumy i zwracamy uzyskany wynik.

Podobnie, jeśli suma przekroczyła już wartość 10. Wtedy również wychodzimy całkowicie z pętli i zwracamy wynik.

Podsumowując

Przy pomocy poleceń break i continue możesz sterować wykonywaniem pętli.

W miarę potrzeby możesz przejść do kolejnego przebiegu (przy pomocy continue) lub całkowicie wyjść z pętli (z wykorzystaniem break).

Teraz czas na zabawy z datą i czasem.

Spis lekcji w rozdziale trzecim

Poprzednia lekcja: Pętla foreach Następna lekcja: Data i czas