Treci la conținutul principal

Bucla foreach în PHP pe tablouri indexate

Când vrei să parcurgi fiecare element al unui tablou sau fiecare proprietate a unui obiect, foreach este alegerea firească. Nu ai nevoie de contor, pentru că PHP ține evidența poziției în locul tău.

La fiecare trecere, valoarea elementului curent este pusă în variabila pe care ai numit-o, aici $value. Bucla se termină după ce ultimul element a fost prelucrat.

Parcurgerea unui tablou indexat

Afișează fiecare element al tabloului indexat $colors:

Prompt
Scrie un script PHP care creează un tablou de culori: "red", "green", "blue", "yellow". Folosește o buclă foreach pentru a afișa fiecare culoare, urmată de o întrerupere de linie.
Ieșire: script PHP

Bucla foreach în PHP pe tablouri asociative

Elementele unui tablou asociativ au chei cu nume și de multe ori vei dori cheia împreună cu valoarea. Ca să le obții pe amândouă, scrie-le în antetul foreach sub forma $key => $value.

Parcurgerea unui tablou asociativ

Se afișează numele (cheia) și vârsta (valoarea) fiecărui membru din $members:

Prompt
Scrie un script PHP care creează un tablou asociativ cu membri: "Peter"=>"35", "Ben"=>"37", "Joe"=>"43". Folosește o buclă foreach pentru a afișa atât cheia, cât și valoarea, separate prin " : ", urmate de o întrerupere de linie.
Ieșire: script PHP

Bucla foreach în PHP pe obiecte

Și obiectele funcționează cu foreach: bucla le parcurge proprietățile una câte una.

Parcurgerea proprietăților unui obiect

Aici, numele fiecărei proprietăți a obiectului $myCar este afișat lângă valoarea ei:

Prompt
Scrie un script PHP care definește o clasă Car cu proprietățile publice $color și $model și un constructor care le setează. Creează un obiect Car cu color "red" și model "Volvo". Folosește o buclă foreach pentru a afișa numele și valoarea fiecărei proprietăți, separate prin ": ", urmate de o întrerupere de linie.
Ieșire: script PHP

Instrucțiunea break în PHP

Nu trebuie să parcurgi tabloul până la capăt. Un break încheie bucla înainte să ajungă la ultimul element.

Oprirea buclei cu break

Bucla se încheie când $x conține "blue", așa că se afișează doar culorile dinaintea ei:

Prompt
Scrie un script PHP care creează un tablou de culori: "red", "green", "blue", "yellow". Folosește o buclă foreach. Dacă culoarea curentă este "blue", folosește break pentru a opri bucla. Altfel, afișează culoarea urmată de o întrerupere de linie.
Ieșire: script PHP

Instrucțiunea continue în PHP

Folosește continue ca să sari peste un element fără să închei bucla. Restul acelei iterații este abandonat și vine rândul elementului următor.

Sărirea unei iterații cu continue

Când $x conține "blue", echo este sărit, așa că se afișează celelalte trei culori:

Prompt
Scrie un script PHP care creează un tablou de culori: "red", "green", "blue", "yellow". Folosește o buclă foreach. Dacă culoarea curentă este "blue", folosește continue pentru a o sări. Altfel, afișează culoarea urmată de o întrerupere de linie.
Ieșire: script PHP

Bucla Foreach în PHP prin referință

În mod normal, variabila buclei conține o copie a fiecărui element, așa că dacă îi atribui o valoare nouă, tabloul original rămâne neschimbat.

Ca să modifici tabloul însuși, pune caracterul & în fața variabilei în declarația foreach. Variabila devine astfel o referință către elementul tabloului, iar orice îi atribui ajunge în tabloul original.

Foreach fără referință

Bucla îi dă lui $x valoarea „pink” când găsește „blue”, însă var_dump() arată că $colors nu s-a schimbat:

Prompt
Scrie un script PHP care creează un tablou de culori: "red", "green", "blue", "yellow". Folosește o buclă foreach fără referință. Dacă culoarea curentă este "blue", schimbă variabila buclei în "pink". După buclă, folosește var_dump pentru a arăta că tabloul original este neschimbat.
Ieșire: script PHP

Foreach cu referință

Cu &$x, aceeași atribuire ajunge chiar în tablou, iar „blue” este înlocuit cu „pink”:

Prompt
Scrie un script PHP care creează un tablou de culori: "red", "green", "blue", "yellow". Folosește o buclă foreach cu operatorul de referință &. Dacă culoarea curentă este "blue", schimbă variabila buclei în "pink". După buclă, folosește var_dump pentru a arăta că tabloul original a fost modificat.
Ieșire: script PHP

Sintaxă alternativă

Există și un al doilea mod de a scrie o buclă foreach: înlocuiești acoladele cu două puncte și închei bucla cu endforeach.

Foreach cu endforeach

Din nou tabloul indexat $colors, afișat de data aceasta cu forma endforeach:

Prompt
Scrie un script PHP care creează un tablou de culori: "red", "green", "blue", "yellow". Folosește sintaxa alternativă foreach cu endforeach pentru a afișa fiecare culoare, urmată de o întrerupere de linie.
Ieșire: script PHP