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ștebreak 2. - Folosești
continueîntr-unswitchaflat într-o buclă. În PHP, acolocontinuese comportă cabreakși primești avertismentul"continue" targeting switch is equivalent to "break"; scriecontinue 2dacă 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ă.