PHP matrice corectă de sortare

Destul de des, în literatura de specialitate pentru a itera matrice oferă următoarea structură:

La prima vedere, totul este bine, dar utilizarea unui astfel de cod este extrem de nedorit. Faptul este că, la fiecare iterație a buclei, și funcția mai precis, atunci când verificarea condițiilor, va fi numit count (). Puteți modifica, desigur, modul în care codul sleduyushy:

A doua opțiune va rula mai repede. În cazul meu, diferența a fost de 0,3 secunde. Dar, apoi, din nou se dovedește oarecum urât, cu o variabilă suplimentară, care nu este bun. Întrebarea este, de ce utilizați o buclă în cazul în care există un minunat foreach ciclu php? Ceea ce, de altfel, este special conceput pentru a itera peste tablouri și obiecte.

În plus, ultima opțiune funcționează un pic mai repede decât ultimul. Nu mult, dar mai rapid undeva în 0,01 secunde.

Deci, de ce, unii încă mai continuă să folosească ciclul pentru? Cel mai probabil lucru este faptul că programatorii neexperimentați va cere imediat întrebarea: „Acest tip este frumos, dar, în acest din urmă caz, nu putem schimba elementele de matrice“. Și din nou, acest lucru este o greșeală foarte mare. Să considerăm un exemplu simplu, să ne uităm peste toate elementele unei matrici și le înmulțește cu 2. Vă rugăm să:

Aici, singura diferență este că variabila $ e va fi o referință la valoarea elementului matrice. Și nu uitați să-l eliminați după ciclul folosind funcția unset (). Acest lucru ar trebui să fie obligatorie. Citeste aici.

Și, în sfârșit, un alt exemplu de unde poate veni într-adevăr la îndemână pentru construcții. Aici vorbim despre un moment în care aveți nevoie pentru a itera peste elementele de matrice de la sfârșitul anului. Și din nou, mai multe surse sugerează să facă acest lucru:

Deși puteți pur și simplu, fără a bibelouri:

Executarea script-ul primelor 0,856 secunde, al doilea - 0,157 secunde (mai rapid decât de 5 ori!). Care dintre ele este mai bine pentru tine de a decide.

manșon
Prima dată când am văzut că este posibil să se schimbe matrice foreach'e: foreach ($ matrice ca $ E) $ e * = 2; Întotdeauna am făcut acest lucru: foreach ($ array ca $ k => $ e) $ array [$ k] * = 2; Asta pentru că - în direct și să învețe)
răspuns

korolariya
Poate adăuga un blog la Favorite
răspuns

Anton
Cum de a lucra cu două-dimensionale și matrice tridimensională într-o buclă foreach?
răspuns

Ivan
Foarte simplu, precum și cu două-dimensionale, puteți verifica, care vine cu fiecare iterație. Un exemplu de recursie

Alex
Cauti ceva de utilizare. Dacă matrice unidimensională a doua și a treia versiune despre aceeași viteză, apoi la itera ce unele obiecte, înregistrări de date duplicarea matrice va duce la un decalaj foreach vizibil.
răspuns

articole similare