break / continue în PHP

break oprește complet o buclă, iar continue sare peste restul pasului curent și trece la următorul.

Sintaxă
break;  break 2;  continue;  continue 2;

Ce face break / continue

În orice buclă (for, foreach, while, do-while), break iese imediat din buclă, iar continue abandonează pasul curent și continuă cu următorul. break încheie și un bloc switch.

În buclele imbricate poți da un număr: break 2 iese din două bucle deodată, iar continue 2 trece la pasul următor al buclei exterioare.

Exemple

Exemplul 1: Oprire la primul rezultat găsit

<?php
$utilizatori = ["ana@exemplu.ro", "mihai@exemplu.ro", "ioana@exemplu.ro"];
$cautat = "mihai@exemplu.ro";

foreach ($utilizatori as $pozitie => $email) {
    echo "verific $email\n";
    if ($email === $cautat) {
        echo "Găsit la poziția $pozitie\n";
        break;
    }
}

Rezultat

verific ana@exemplu.ro
verific mihai@exemplu.ro
Găsit la poziția 1

Exemplul 2: Sărirea elementelor nepotrivite

<?php
$produse = ["Mouse" => 40, "Monitor" => 0, "Căști" => 12, "Webcam" => 0];

foreach ($produse as $nume => $stoc) {
    if ($stoc === 0) {
        continue;
    }
    echo "$nume: $stoc buc.\n";
}

Rezultat

Mouse: 40 buc.
Căști: 12 buc.

Exemplul 3: break 2 în bucle imbricate

<?php
$sali = ["A" => [1, 2, 3], "B" => [1, 2], "C" => [1, 2, 3, 4]];
$ocupate = ["A-1", "A-2", "A-3", "B-1"];

foreach ($sali as $sala => $locuri) {
    foreach ($locuri as $loc) {
        if (!in_array("$sala-$loc", $ocupate)) {
            echo "Primul loc liber: sala $sala, locul $loc";
            break 2;
        }
    }
}

Rezultat

Primul loc liber: sala B, locul 2

Greșeli frecvente

  • Folosești break în buclă interioară și te aștepți să iasă din ambele bucle. Iese doar din cea interioară; folosește break 2.
  • Folosești continue într-un switch aflat într-o buclă. În PHP, acolo continue se comportă ca break și primești avertismentul "continue" targeting switch is equivalent to "break"; scrie continue 2 dacă vrei să treci la pasul următor al buclei.

Comenzi înrudite

  • foreach: Parcurge, pe rând, fiecare element dintr-un tablou.
  • for: Repetă un bloc de cod de un număr cunoscut de ori.
  • while: Repetă un bloc de cod cât timp o condiție este adevărată.
  • switch / match: Alege un bloc de cod în funcție de valoarea unei variabile. match este varianta modernă, mai scurtă.