Informațiile furnizate în matrice potdiferă în tipul de valori și dimensiunea acestora, iar numărul de elemente nu poate fi întotdeauna determinat în prealabil. Programarea modernă, în special într-o versiune distribuită, vă permite să creați structuri de date complexe, al căror conținut și proprietăți pot fi determinate dinamic la un moment nedefinit în timp, ca urmare a diferitelor acțiuni sau evenimente într-o secvență diferită.
Nu este întotdeauna posibil în stadiul de dezvoltare să se prezică procesul de operare, să se ofere toate opțiunile posibile pentru prezentarea și utilizarea informațiilor, dinamica aspectului și utilizării acestora.
Sintaxa buclei de conținut
Formulând sintaxa foreach, PHP a sugerat douăopțiuni pentru accesarea elementelor. Ambele sunt independente de tipul cheii sau tipul valorii și pot fi emulate cu o buclă normală. Se propune să se considere o matrice ca o colecție de elemente, al căror număr nu este determinat inițial. Matricea poate fi formată din mers, cu sau fără chei. Un element poate fi șters într-o matrice, cheile pot fi asociative și formate implicit.
foreach ($ aArrayName ca $ xValue) {corp buclă}
O astfel de construcție obligă bucla PHP foreachparcurge toate elementele la rând. În corpul buclei, variabila $ xValue va prelua secvențial toate valorile matricei $ aArrayName în ordinea în care au fost adăugate. Valorile cheie ale articolului nu vor fi disponibile.
foreach ($ aArrayName ca $ xKey => $ xValue) {corp bucla}
Și aici, executând constructul foreach, PHPva scana întregul conținut al matricei, dar în corpul buclei, atât variabila $ xValue, cât și variabila $ xKey, cheia elementului, vor lua valorile corespunzătoare în perechi.
Succesiunea elementelor
În interiorul foreach PHP va sugera conținut înordinea în care au fost adăugate elementele, dar dacă în timpul formării matricei au existat adăugiri / ștergeri repetate și ceva a fost adăugat cu chei și ceva fără, atunci cel mai bine este să lucrați cu matricea nu din poziția succesiune de elemente, dar în funcție de conținutul lor sau de chei.
Din diverse motive obiectivesecvența din cadrul matricei poate să nu fie urmată și/sau să nu conteze, dar nu ar trebui să fie ghidată oricum. În sarcinile simple, pe seturi de date banale, nu există probleme, iar algoritmul poate fi configurat pentru procesare secvențială, dar atunci când mulți factori influențează procesul de creare/editare a unei matrice, ar trebui să vă concentrați asupra conținutului.
Elemente moderne „corecte”.
Din punctul de vedere al conceptului propriu stabilit, fără să țină cont măcar de astfel de limbaje, matricea PHP foreach trebuie proiectată independent, ținând cont de sarcina specifică reală.
Practică, când există un dat, iar dat are un indice în colecția generală a celor similare după un anumit criteriu, - a fost ieri.
Indexul a devenit o cheie, iar matricea a devenittablou asociativ. Adică, cheia și-a pierdut unicitatea secvențială (de obicei era secvențială: 0, 1, 2, ... n) și a devenit și o valoare, dar o valoare simplă (adică o cheie) asociată cu o valoare reală (care este conținutul unui element). Asta este astăzi, este corect, dar nu perfect.
De aceea PHP consideră bucla foreach ca o alternativă la bucla obișnuită orientată către tablouri obișnuite. Acest lucru este în primul rând, și asta este ceea ce este foarte important, pentru că de aici rezultă corectitudinea reală a elementelor matriceiprecum și cheile lor!
Matrice corectă de elemente corecte
Mai întâi a fost un element, apoi două elemente... așa a apărut o matrice de elemente și o buclă printr-o matrice a acestora:
pentru ($ i = 0; $ i <număr ($ aArrayName); $ i ++) {
corpul de procesare al fiecărui $ aArrayName [$ i]
}
Apoi elementul și-a primit propriul nume în loc de 0, 1, 2, ... n fără față - cheia și apoi matricele au devenit asociative și apoi a fost nevoie de bucla foreach - „o buclă pe fiecare”:
foreach ($ aArrayName ca $ xKey => $ xValue) {
corpul de procesare al fiecărui $ aArrayName [$ xKey] sau $ xValue care este același
}
Acum a sosit momentul când elementele corecte ar trebui să vină în matrice., adică cele care sunt în sine.Ei înșiși își cunosc indexul, conținutul, locul lor în secvență; ei tind să își manifeste propria alegere a secvenței și să delege toate aceste capacități matricei care le conține.
Astfel de matrice corecte vor fi procesatede ei înșiși. Pur și simplu nu va fi o nevoie specială de a folosi bucle și bucle obișnuite pentru fiecare. Formal, sintaxa și semantica permit deja acest lucru, întrebarea se află doar în spatele inerției conștiinței dezvoltatorului.