Contacte

FORECH Language PHP comandă. Faceți și ciclurile de predare. Modificați indicele de matrice interne în timpul iterației

De multe ori trebuie să treceți prin toate elementele matricei PHP și să efectuați orice operațiune pe fiecare element. De exemplu, puteți afișa fiecare valoare în tabelul HTML sau puteți seta fiecare element o nouă valoare.

În această lecție, ne vom uita la proiectarea de predare atunci când organizăm un ciclu pe arrays indexate și asociate.

Ciclul de valori ale elementelor

Cel mai simplu caz de predare este organizarea unui ciclu prin valori în matricea indexată. Sintaxă principală:

Foreach ($ matrice ca valoare de $) (// face orice cu $ valoare) // aici codul este efectuat după finalizarea ciclului

De exemplu, următorul script trece prin lista de directori din matricea indexată și afișează numele fiecăruia:

$ Directori \u003d Array ("Alfred Hitchcock", "Stanley Kubrick", "Martin Scorsees", "Fritz Lang"); FOREACH ($ Directori ca regizor de $) (Directorul ECHO $ \u200b\u200b".
"; }

Codul de mai sus va fi afișat:

Alfred Hitchcock Stanley Kubrick Martin Scorsese Fritz Lang

Ciclul pe taste și valori

Cum rămâne cu marginea asociată? Când utilizați acest tip de matrice, este adesea necesar să aveți acces la cheia fiecărui element, precum și la valoarea acestuia. Designul de predare are o modalitate de a rezolva sarcina:

Foreach ($ matrice ca cheie $ \u003d\u003e $ valoare) (// face ceva cu tasta $ și / sau cu $ valoare) // aici codul este executat după finalizarea ciclului

Un exemplu de organizare a ciclului conform matricei asociate cu informații despre film, afișează cheia fiecărui element și valoarea acestuia în lista HTML a definițiilor:

$ Film \u003d Array ("Titlu" \u003d\u003e "Fereastra din spate", "Director" \u003d\u003e "Alfred Hitchcock", "An" \u003d\u003e 1954, "minute" \u003d\u003e 112); Echo "

"; Foreach ($ film ca cheie $ \u003d\u003e $ valoare) (ecou"
$ Cheie:
"; Eco"
$ valoare
";) Eco"
";

Acest script va elimina:

Titlu: Fereastra din spate Director: Alfred Hitchcock Anul: 1954 minute: 112

Schimbarea valorii elementului

Și care este cazul în schimbarea valorii elementului atunci când trece ciclul? Puteți încerca acest cod:

Foreach ($ myarray ca valoare de $) ($ valoare \u003d 123;)

Cu toate acestea, dacă o conduceți la execuție, atunci veți găsi că valorile din matrice nu schimba. Motivul este că Foreau funcționează cu copie Valori masive și nu cu originalul. Astfel, matricea originală rămâne neatinsă.

Pentru a schimba valorile matricei de care aveți nevoie legătură pe sens. Pentru a face acest lucru, puneți un semn și în fața valorii variabile în proiectarea foiach:

Foreach ($ myarray ca valoare de $) (valoare $ \u003d 123;)

De exemplu, următorul script trece cu ciclul fiecărui element (numele directorului) în matricea de registru $ și utilizează funcția PHP Explode () și designul listei pentru a schimba numele numelui și prenumele:

$ Directori \u003d Array ("Alfred Hitchcock", "Stanley Kubrick", "Martin Scorsees", "Fritz Lang"); . ) dezactivați (regizor de $); // Afișează rezultatul final Foreach ($ directorii de $) (Director de $ pentru ECHO ".
"; }

Scriptul va elimina:

Hitchcock, Alfred Kubrick, Stanley Scorsese, Martin Lang, Fritz

Rețineți că scriptul apelați funcția Unset () pentru a elimina variabila regizorului $ după finalizarea primului ciclu. Aceasta este o practică bună dacă intenționați să utilizați o variabilă mai târziu în script într-un alt context.

Dacă nu ștergeți link-ul, acesta este, riscul pentru executarea ulterioară a codului de referință casual la ultimul element din matrice ("Lang, Fritz"), dacă utilizați în continuare variabila Director, care va duce la Consecințe neprevăzute!

rezumat

În această lecție, ne-am uitat cum să folosim designul PHP de predare pentru a organiza un ciclu pe elementele matricei. Întrebările au fost revizuite:

  • Cum să organizați un ciclu pe elementele matricei
  • Cum să accesați cheia și valoarea fiecărui element
  • Cum se utilizează un link pentru a schimba valorile la trecerea unui ciclu

Ciclul de foiere PHP poate fi utilizat după cum urmează:

foreach ($ array_name ca valoare $) (// cod care ar trebui executat)

foreach ($ array_name ca cheie $ \u003d\u003e $ valoare) (// // cod care ar trebui executat)

Un exemplu de utilizare a unui ciclu de foiach cu o matrice numerică

În acest exemplu, vom crea o serie de cinci elemente cu valori numerice. După aceasta, ciclul de foiere PHP va fi folosit pentru a efectua iterația acestei matrice. În interiorul ciclului de predare, am folosit ECHO pentru a afișa valoarea matricei:

Vizualizați versiunea demo și codul

Exemplu cu tastele și valorile matricei

Acest exemplu descrie o altă modalitate de a utiliza ciclul PHP FOREACH. Pentru a face acest lucru, am creat o gamă asociativă de trei elemente. Include numele angajaților ( ca cheile) și sumele salariale ( ca valori):

Vizualizați versiunea demo și codul

Un exemplu de modificare a valorii unui element de matrice în ciclul de predare

De asemenea, puteți utiliza o serie de matrice PHP pentru a schimba valorile elementelor de matrice. Pentru a face acest lucru, utilizați "&" înainte de "$" pentru o valoare variabilă. De exemplu:

& $ value_of_element.

Valoarea va fi schimbată. Pentru a face mai clare, luați în considerare următorul exemplu.

În acest exemplu, am creat o gamă numerică de cinci elemente. După aceea, bucla de predare a fost utilizată pentru a afișa valorile elementelor.

Apoi a creat un alt ciclu de foiere, unde se adaugă "&" înainte de $ value_of_element. În parantezele curbate atribuim noi valori elementelor matricei.

Pentru a vedea diferența înainte și după ce a atribuit noi valori, matricea este afișată utilizând funcția Print_R ().

Vizualizați versiunea demo și codul

Care este ciclul de predare PHP?

Ciclul de foiere PHP este folosit pentru a lucra cu o matrice. El trece prin fiecare element.

De asemenea, puteți utiliza pentru a lucra cu matricele de ciclu. De exemplu, folosind proprietatea de lungime pentru a obține lungimea matricei, apoi aplicați-o ca operator max. Dar Foreau este mai ușor, deoarece este conceput pentru a lucra cu matrice.

Dacă lucrați cu MySQL, atunci acest ciclu este și mai potrivit pentru acest lucru. De exemplu, puteți alege mai multe linii din tabelul bazei de date și puteți să le transmită într-o matrice. După aceea, folosind ciclul de predare, treceți prin toate elementele matricei cu executarea oricărei acțiuni.

Rețineți că puteți utiliza ciclul de predare cu o matrice sau numai cu obiectul.

Aplicarea ciclului de predare

În PHP, există două modalități de utilizare a ciclului PHP FOREACH. Ambele sunt descrise mai jos.

  • Sintaxa primei metode de utilizare:

foreach ($ array_name ca valoare $) (valoare ECHO $)

În același timp, trebuie să specificați numele matricei și apoi variabila de valoare $.

Pentru fiecare iterație, valoarea elementului curent este atribuită variabilei valorii $. După finalizarea iterației, variabila i se atribuie valoarea următorului element. Și până când toate elementele matricei sunt dispărute.

  • Sintaxa celei de-a doua metode ( Php freach ca valoare cheie):

Acest lucru este potrivit pentru matricele asociative în care sunt utilizate perechile cheie / valoare.

În timpul fiecărei iterație, valoarea elementului curent va fi atribuită variabilei $ valiR_OF_ELEMENT. În plus, cheia elementului este atribuită unei variabile de tip key_of_element $.

Dacă lucrați cu matrice numerice, puteți utiliza prima metodă în care nu sunt necesare cheile elementelor.

Această publicație este traducerea articolului " PHP Foursach Loop 2 moduri de ao folosi"Pregătit de o echipă de proiect prietenoasă

Designul de predare este o varietate de aceea, inclusă în limba pentru a simplifica generarea de elemente de matrice. Există două soiuri de echipă de predare, destinate diferitelor tipuri de matrice:

foreach (matrice de element de $) (

foreach (matrice ca cheie $ \u003d\u003e $ element) (

De exemplu, atunci când efectuați următorul fragment:

$ Meniu \u003d Arrau ("paste", "friptură", "cartofi", "pește", "cartofi prăjiți);

foreach ($ meniul ca element $) (

imprimare "$ element
";

următorul rezultat va fi derivat:

În acest exemplu, trebuie acordată atenție a două circumstanțe. În primul rând, proiectul de predare revine automat la începutul matricei (în alte structuri ciclice pe care nu le produce). În al doilea rând, nu este nevoie să creștem în mod explicit contorul sau altfel treceți la următorul element al matricei - acest lucru se întâmplă automat la fiecare predare a iterației.

A doua opțiune este utilizată atunci când lucrați cu matrice asociative:

$ wine_inventory \u003d matrice (

"Merlot" \u003d\u003e 15,

"Zinfandel" \u003d\u003e 17,

"Sauvignon" \u003d\u003e 32

foreach ($ wine_inventory ca $ i \u003d\u003e $ item_count) (

tipăriți "$ item item_count sticle de $ am rămas
";

În acest caz, rezultatul arată astfel:

15 sticle de merlot rămase

17 sticle de zinfandel rămas

32 de sticle din Sauvignon rămânând

După cum se poate observa din exemplele de mai sus, designul de predare simplifică lucrarea cu matrice.

Principiul funcționării designului comutatorului este parțial mementouri dacă rezultatul obținut la calcularea expresiei este verificat de lista coincidențelor potențiale.

Acest lucru este deosebit de convenabil atunci când verificați mai multe valori, deoarece utilizarea comutatorului face un program mai vizual și mai compact. Formatul comutatorului comutatorului partajat:

comutator (expresie) (

caz (condiție):

caz (condiție):

Condiția verificată este indicată în paranteze după cuvântul cheie al comutatorului. Rezultatul calculului său este în mod constant comparativ cu condițiile din secțiunile de caz. Când se detectează coincidența, se efectuează blocul secțiunii corespunzătoare. Dacă nu este detectată coincidența, se efectuează unitatea secțiunii implicite opționale.

Așa cum se va arăta în următoarele capitole, una dintre cele mai puternice laturi ale PNP este de a procesa intrarea utilizatorului. Să presupunem că programul afișează lista derulantă cu mai multe opțiuni și fiecare linie de linii corespunde unei anumite comenzi efectuate într-un design separat de caz. Implementarea este foarte convenabilă pentru a construi pe utilizarea comenzii comutatorului:

$ user_input \u003d "rețete"; // Echipa selectată de utilizator

comutator ($ user_input):

caz (căutare "):

imprimare "Să efectueze o căutare!";

case ("dicționar"):

imprimați "Ce cuvânt doriți să căutați în sus?";

caz ("rețete"):

imprimare "Aici este o listă de rețete ...";

imprimare "Aici este meniul ...";

După cum se poate observa din fragmentul prezentat, comanda comutator oferă un cod de organizare clare și vizual. Variabila specificată în starea comutatorului (în acest exemplu - $ user_input) este comparată cu condițiile tuturor secțiunilor de caz ulterioare. Dacă valoarea specificată în secțiunea CASE se potrivește cu valoarea variabilei comparate, se efectuează blocul acestei secțiuni. Comanda de întrerupere împiedică verificarea secțiunilor de caz și completează execuția designului comutatorului. Dacă nu se efectuează nici una dintre condițiile dovedite, secțiunea implicită opțională este activată. Dacă lipsește secțiunea implicită și nici una dintre condiții nu este executată, comanda de comutare este pur și simplu finalizată și programul continuă la următoarea comandă.

Trebuie să vă amintiți că, în absența comenzii de întrerupere în cazul secțiunii de caz (a se vedea următoarea secțiune), comutatorul continuă cu următoarea comandă până când întâlniți comanda de întrerupere sau la sfârșitul designului comutatorului. Exemplul următor demonstrează consecințele absenței echipei uitate: $ valoarea \u003d 0,4;

comutator (valoare $):

imprimare "Valoarea este 0.4
";

imprimați valoarea "este 0.6
";

imprimați valoarea este 0.3
";

imprimare "Nu ați ales o valoare!";

Rezultatul arată astfel:

Absența comenzii de întrerupere a condus la faptul că nu numai comanda de imprimare nu a fost efectuată în secțiunea în care a fost găsită coincidența, dar și comanda de imprimare din secțiunea următoare. Execuția comenzilor de design a comutatorului a fost întreruptă din cauza comenzii comutatorului după a doua comandă de imprimare.

Alegerea dintre comutator și dacă comenzile nu are practic niciun efect asupra performanței pro-gramei. Decizia de a utiliza un anumit design este mai degrabă programator personal.

Comanda de pauză întrerupe imediat execuția designerului în timp, pentru sau comutator, în care se află. Această comandă a fost deja menționată în secțiunea anterioară, dar întreruperea ciclului curent nu epuizează caracteristicile echipei de pauză. În general, sintaxa de pauză arată astfel:

Parametrul opțional N determină numărul de niveluri de structuri de control finalizate de comanda de pauză. De exemplu, dacă comanda de întrerupere este investită în două, în timp ce comenzi și după spargerile de pauză Figura 2, apare o ieșire imediată din ambele cicluri. Implicit, N este egal cu 1; Ieșirea la un nivel poate fi desemnată atât printr-o indicație explicită a 1, cât și a comenzii de întrerupere fără parametru. Rețineți: Comanda I F nu se aplică numărului de structuri de control întrerupte de comanda de pauză.

În timp ce și ciclurile de predare

Ciclu face. . . In timp ce

Ciclu ... în timp ce În C # este versiunea în timp cu pervertorul. Aceasta înseamnă că starea ciclului este verificată după corpurile ciclului. În consecință, ciclurile fac ... în timp ce sunt convenabile în acele situații în care unitatea de operatori trebuie făcută cel puțin o zi. Mai jos este forma generală a operatorului de ciclu de lucru:

(Operatori) în timp ce (condiție);

Dacă există un singur operator, parantezele figure din acest formular sunt opționale. Cu toate acestea, ele sunt adesea folosite pentru a face do-în timp ce designul mai ușor lizibil și nu-l confundau cu proiectarea ciclului de timp. Do-în timp ce ciclul este efectuat până când expresia condiționată este adevărată. Ca exemplu de utilizare a ciclului Do-În timp, puteți aduce următorul program care calculează numărul de numere:

Folosind sistemul; folosind sistemul.collections.Genic; Folosind sistemul.Linq; Utilizând System.Text; Console de nume de nume1 (Consola .Rametline ()); consola.write ("\\ n \\ nfactorial (0) \u003d", i); faceți (rezultat * \u003d Num ++) în timp ce (numărul

Ciclul de predare

Ciclul de predare Acesta servește pentru apelul ciclic la elementele colecției, care este un grup de obiecte. C # Definește mai multe tipuri de colecții, fiecare dintre acestea fiind o matrice. Mai jos este forma comună a operatorului ciclului de predare:

fOREACH (TYPE_NAME_NAME tip în colectare) Operator;

Aici tIP NAME_NAME_TSIKLA. Indică tipul și numele variabilei de control al ciclului, care primește valoarea următorului element al colecției la fiecare etapă de execuție a ciclului de predare. O colecție denotă o colecție intervievată ciclic, care este denumită în continuare o matrice. În consecință, tipul variabilei ciclului trebuie să corespundă tipului de element de matrice. În plus, tipul poate fi notat de cuvântul cheie VAR. În acest caz, compilatorul definește tipul variabilei ciclului, pe baza tipului de element de matrice. Acest lucru poate fi util pentru a lucra cu un anumit tip de solicitări. Dar, de regulă, tipul este indicat în mod explicit.

Operatorul ciclului de predare acționează după cum urmează. Când începe ciclul, este selectat primul element al matricei și este atribuită variabila ciclului. La fiecare etapă de iterație ulterioară, este selectat următorul element al matricei, care este stocat în variabila ciclului. Ciclul este finalizat când vor fi selectate toate elementele matricei.

Bucla de predare vă permite să transmiteți fiecare element al colecției (un obiect reprezentând o listă a altor obiecte). Formal, astfel încât ceva poate fi considerat ca o colecție, acest lucru ar trebui să susțină interfața ienumerabilă. Exemple de colecții pot servi drept matrice C #, clase de colecții din spațiul de nume System.Collection, precum și clase de colecții de utilizatori.



Ți-a plăcut articolul? Împărtășește-l