Deseori este convenabila stocarea mai multor valori într-o variabila. O asemenea variabila se numeste matrice (Array sau "tablou"), iar valorile individuale se numesc elementele matricei. Aici, "matrice", "Array" sau "tablou" reprezinta acelasi lucru (in varianta engleza: Array), fapt pentru care vom folosi orcare dintre aceste denumiri.
Fiecare element al unei matrici are doua elemente importante: cheia si valoarea elementului.
Matricele pot fi create folosind doua medode principale:
1. Crearea de matrice folosind functia de atribuire
Pentru a crea o matrice, atribuiti unui element al matricei o valoare si o cheie. De exemplu, urmatoarea instructiunea de atribuire:
creeaza un tablou denumit "$clasa" si un element cu valoarea "geometrie" identificat prin cheia "1".
Pentru a stoca în matrice o a doua valoare, puteti folosi urmatoarea instructiune de atribuire:
Pentru a obtine acces la un element al matricei, specificati numele matricei si valoarea cheii. De exemplu, instructiunea de atribuire
Atribuie valoarea "geometrie" variabilei $clasa_mate.
Cheile folosite pentru identificarea elementelor unei matrice nu trebuie sa fie obligatoriu numere consecutive; nici macar nu trebuie sa fie numere. De exemplu, iata instructiuni de atribuire care creeaza o matrice ce stocheaza preferinte în materie de fructe:
2. Crearea de matrice folosind sintaxa array()
Dincolo de utilizarea instructiunilor de atribuire, cealalta modalitate principala de creare a unui tablou PHP consta în utilizarea functiei array(). Iata un exemplu simplu, care creeaza un tablou având drept chei valori întregi consecutive:
Deoarece valoarea cheilor nu a fost specificata, acestea vor fi automat trecute de program ca numere intregi consecutive, incepand de la "0" (prima cheie va avea valoarea '0', a doua cheie va avea valoarea '1', ...)
Aceasta instructiune creeaza o matrice care contine urmatoarele asocieri:
Daca doriti sa asociati unei valori o anumita cheie, puteti folosi operatorul =>, astfel:
Aceasta instructiune creeaza urmatoarea matrice:
Ca si în cazul utilizarii unei instructiuni de atribuire pentru crearea unei matrice valorile cheilor nu trebuie sa fie consecutive si nici macar întregi:
Aceasta instructiune creeaza urmatoarea matrice:
Este posibil ca un element al matricei sa fie de asemenea o matrice. In acest caz avem de-a face cu o matrice multi-dimensionala.
Sa luam un exemplu practic :
Sau putem scrie acelasi script si astfel (rezultatul e acelasi) :
Rezultatul afisat va fi urmatorul :
In exemplul de mai sus am declarat un array cu 2 linii si 3 coloane. Prima linie este identificata de array-ul cu numele "fisrtLine", iar ce-a de-a doua linie este identificata de "nextLine".
Observati de asemenea foloasirea in functia "echo" a operatorului de concatenare "." impreuna cu "<br />" (care este un element din XHTML), pentru ca la afisarea in browser fiecare rezultat al functiei "echo" sa fie trecut pe o linie noua. In caz contrar rezultatele ar fi fost pe aceeasi linie : 10 20 20 alfa beta
Când ati stocat date într-un tablou, puteti obtine acces la valoarea unui element al tabloului sau îi puteti modifica valoarea prin intermediul cheii asociate elementului.
De exemplu, sa presupunem ca folositi urmatoarele instructiuni pentru a crea un tablou:
Puteti obtine acces la valoarea asociata cheii 2 prin intermediul unei instructiuni ca aceasta:
Similar, puteti modifica valoarea asociata cheii 3 prin intermediul unei instructiunu ca aceasta:
Un Array ale carui chei sunt valori întregi consecutive se numeste "Array numeric" (sau secvential).
În general, valoarea cea mai mica a unei chei dintr-un tablou numeric este zero; totusi, puteti crea array numeric incepand cu valoarea 1 sau orice alta valoare întreaga ca valoare minima a cheii.
În cazul în care cunoasteti valoarea minima a cheii unui tablou secvential, puteti parcurge tabloul folosind o bucla for. Pentru aceasta, initializati variabila de bucla la valoarea cea mai redusa a cheii. Folositi functia count() pentru a forma expresia de test (conditia) a buclei. Functia count() returneaza numarul elementelor dintr-un tablou.
Iata un exemplu simplu
$arr = []; // array gol, in loc de array(); $arr = [1, 2, 3, 4]; // array numeric $arr = ['eng'=>'courseweb.net', 'ro'=>'marplo.net', 'num'=>8]; // array asociativ- Array-ul creat cu aceasta sintaxa poate fi accesat, modificat si parcurs ca orice array.
Observati ca parcurgerea continua chiar si dupa gasirea valorii cautate.
Când se cauta într-un tablou, executia cautarii poate fi oprita dupa gasirea elementului dorit; continuarea parcurgerii in Array nu face decât sa iroseasca resursele calculatorului, fara a afecta rezultatele operatiei.
Pentru a opri executia unei parcurgeri, puteti folosi instructiunea break, care determina încheierea imediata a buclei care o contine.
Iata cum se poate revizui exemplul anterior, astfel încât sa includa o instructiune break:
O instructiune corelata cu instructiunea break este continue.
Instructiunea continue opreste secventa curenta a buclei, determinând evaluarea imediata a expresiilor de incrementare si de test.
Ca un exemplu, sa presupunem ca doriti sa cautati în tabloul $limbaje pentru a determina numarul limbajelor care au nume scurte, adica nume alcatuite din maximum 4 caractere. Iata un exemplu care executa aceasta prelucrare a datelor:
<p>Cursuri graruite: <mark>MarPlo.net</mark> , jocuri, anime.</p>
a:hover { font-weight: bold; color: #00da01; }
var num = 12.34567; num = num.toFixed(2); alert(num); // 12.35
$arr = file("a_file.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); var_export($arr);
What time is it? It is a quarter to 5. - Cat este ora? E 5 fara un sfert.
¿Qué hora es? Son las tres menos cuarto. - Cat este ora? E 3 fara un sfert.