Parcurge matrice

sarcină
Tu trebuie să treacă printr-unul câte unul și să proceseze toate sau un element
array polițiști.

decizie
Utilizați instrucțiunea foreach:

foreach ($ matrice ca valoare $) // Acțiune cu o valoare $
>

Sau pentru o serie de chei și valori:

foreach ($ array ca $ cheie = valoare> $) // Act II
>

O altă modalitate este de a utiliza o declarație pentru:
pentru ($ cheie = 0, $ size = count ($ array); $ $ costul cheie).
>

PHP declarație foreach atinge nu matrice original și o copie a acestuia.


Dimpotrivă, atunci când se utilizează fiecare () și pentru operator, iterează PHP peste matrice originală. Prin urmare, în cazul în care modificarea matrice se produce în interiorul unei bucle, este posibil să se obțină (sau nu pot primi) comportamentul așteptat.

Dacă trebuie să modificați matrice, utilizați o legătură directă cu ea:

Variabilele returnate de fiecare (), nu se referă la valorile inițiale ale șirului
- o copie a acestora, astfel încât acestea să se schimbe nu este reflectată în matrice. De aceea, trebuie să modificați elementele variabile $ [poziția $] în loc de elementul $ variabila.

Atunci când se utilizează fiecare () monitorizează PHP și memorează poziția în ciclu. Pentru a începe primul ciclu, după prima trecere, apelați funcția de resetare () pentru a returna un pointer înapoi în poziția înainte de a ciclului. altfel
funcția fiecare () returnează o valoare de fals.

Pentru bucla funcționează numai în cazul tablourilor cu taste întregi consecutive. În cazul în care lungimea de matrice nu este schimbat, apoi neeffektivnopri fiecare ciclu de trecere din nou cauza funcția count () pentru a calcula elementele de $ variabila.


Prin urmare, durata de stocare a matrice, folosiți întotdeauna dimensiunea $ variabila:

pentru (element $ = 0, marimea $ = count ($ articole); $ element = 0; $ item--).
>

Versiunea asociativă pentru bucla:

pentru (reset ($ array); tasta $ = tasta ($ array); următor ($ array)).
>

Acest lucru va avea ca rezultat o eroare în cazul în care orice element conține un șir de caractere cu valoare echivalentă cu false, astfel încât pare să fie o valoare normală, cum ar fi 0, poate duce la o finalizare timpurie a ciclului.

În cele din urmă, utilizați array_map () funcție pentru a transmite fiecare element funcții de prelucrare:

// traduce toate cuvintele în litere mici
$ = Array_map Lc ( 'strtolower', $ cuvinte);

Funcția Primul array_map argument () este numele funcției care modifică un element separat, iar al doilea argument - o matrice care este procesat într-un ciclu.

De obicei, aceste caracteristici sunt considerate a fi mai puțin flexibile decât metodele discutate anterior, dar acestea sunt potrivite pentru procesarea și combinarea unei multitudini de matrice.


În cazul în care nu se cunoaște dacă datele prelucrate ca valori scalare sau ca o matrice, este necesar pentru a preveni utilizarea unei declarații foreach nu este o matrice. O modalitate - aceasta este utilizarea de is_array () Funcția:

în cazul în care (is_array ($) articole) // bucla cod foreach pentru matrice
> Else // cod pentru o cantitate scalară
>

O altă modalitate este de a forța conversia tuturor variabilelor din matrice folosind funcția settype ():

settype ($ articole, 'matrice');
// cod pentru matrice de buclă

Aceasta devine o valoare scalară într-o matrice cu un singur element și face codul mai atractiv în detrimentul puțin deasupra capului suplimentare.

articole similare