Mam pętlę foreach i instrukcję if. Jeśli zostanie znalezione dopasowanie, muszę ostatecznie wyrwać się z foreach.
foreach($equipxml as $equip) {
$current_device = $equip->xpath("name");
if ( $current_device[0] == $device ) {
// found a match in the file
$nodeid = $equip->id;
<break out of if and foreach here>
}
}
php
if-statement
foreach
break
au_stan
źródło
źródło
Odpowiedzi:
if
nie jest strukturą pętlową, więc nie można się z niej „wyrwać”.Możesz jednak wyjść z tego
foreach
po prostu dzwoniącbreak
. W twoim przykładzie ma pożądany efekt:Tylko dla kompletności dla innych, którzy natkną się na to pytanie, szukając odpowiedzi ..
break
pobiera opcjonalny argument, który określa, ile struktur pętli powinno się złamać. Przykład:Wynikowy wynik:
źródło
switch($a) { case 'x': switch($b) { case 'x': break 2; }; break; }
również wewnętrznebreak 2
instrukcje obu instrukcji przełączania.Po prostu użyj
break
. To wystarczy.źródło
if ($abort_if_block) break;
które pierwotnie ustaliłembreak 2
i nie udało się. dziękiBezpieczniejszym sposobem podejścia do zerwania pętli
foreach
lubwhile
w PHP jest zagnieżdżenie rosnącej zmiennej licznika iif
warunkowe w oryginalnej pętli. Zapewnia to ściślejszą kontrolę, niżbreak;
może to spowodować spustoszenie w innym miejscu na skomplikowanej stronie.Przykład:
źródło
endwhile
instrukcji, musisz napisaćwhile (..): ...; endwhile;
- zwróć uwagę na dwukropek tutajwhile
!Dla tych, którzy lądują tutaj, ale szukają sposobu na wyjście z pętli zawierającej instrukcję include, użyj return zamiast break lub kontynuuj.
Jeśli chcesz się złamać będąc w do_this_for_even.php, musisz użyć return. Użycie break lub kontynuuj zwróci ten błąd: Nie można przerwać / kontynuować 1 poziom. Znalazłem więcej szczegółów tutaj
źródło