Învăţăm PHP: Despre şiruri (simple)


În lecţia despre Variabile şi constante am pomenit ceva despre tipurile din PHP. Atunci mă rezumam la numere (integers, floating) şi texte (strings). Am sărit atunci – ca să fie totul cât mai uşor – peste un tip foarte important: în engleză ar fi tipul array, iar eu aş prefera să îi spun şir. În fapt el ascunde ceva mai mult decât un simplu şir, dar toate la rândul lor.

La ce este util acest tip şir? Sunt situaţii în care în aceeaşi variabilă vrem să avem memorate mai multe valori… un şir de valori. Este mai comod nu doar ca scriere ci şi ca utilizare, după cum vom vedea în timp. Câteva exemple mai jos:

[PHP]$fructe=array(‘mere’,’pere’,’cirese’,’struguri’,’visine’);
$anotimpuri=array(‘primavara’,’vara’,’toamna’,’iarna’);
$identificare=array(‘costel’,’popescu’,23,’costel@po.ro’,’h839dejw3′);

echo ‘Imi place sa mananc ‘.$fructe[0].’.
‘;
echo ‘S-a dus ‘.$anotimpuri[2].’.
‘;
echo ‘Parola mea supersecreta este ‘.$identificare[4].’.
‘;[/PHP]

După cum vedeţi este uşor să definim un şir. Îmi amintesc când în liceu eram la această lecţie. Profesorul desena pe tablă un tren, explicându-ne că şirul e ca un tren, fiecare vagon memorând o valoare. Observaţi al treilea şir? Valorile dintr-un şir nu trebuie să fie de acelaşi tip. Un şir poate avea valori numerice, valori text, ba chiar şi un alt şir poate fi elementul unui şir!!! Dar haideţi să ne urcăm în revenim la vagoane. În mod normal noi numărăm: vagonul 1 de după locomotivă, vagonul 2 de după locomotivă ş.a.m.d. În PHP e esenţial să reţineţi că numărătoarea nu începe de la 1 ci de la 0! Aceasta înseamnă că elementul cu indexul 0 din şirul $fructe este ‘mere’; elementul cu indexul 2 din şirul $anotimpuri nu este ‘vara’ ci ‘toamna’; respectiv ‘h839dejw3’ este al 4-lea element din şirul $identificare. Puteţi proba executând codul de mai sus, care ilustrează şi cum „scoatem” valorile dintr-un şir. După numele variabilei punem între paranteze drepte indexul dorit. Încercaţi să puneţi un index fără acoperire (de exemplu $fructe[1000]). Ce ziceţi? Explodează? Nu. PHP maxim va da un warning (avertizare), dar în esenţă va returna… nimic… nada… nothing.

Ca o paranteză vă semnalez două funcţii mai speciale de afişare: print_r şi var_dump. Amândouă sunt utile mai mult în etapa de debugging, când vrei să vezi ce valori are o variabilă sau un şir chiar. Cel mai bine vă lămuriţi văzând în acţiune codul de mai jos, unde am folosit cele două funcţii pe un şir şi pe o variabilă obişnuită.

[PHP]$lunile=array(‘ianuarie’,’februarie’,’martie’,’aprilie’,’mai’,’iunie’);
print_r($lunile);
echo ‘
‘;
var_dump($lunile);
echo ‘

‘;
$a=”copac”;
print_r($a);
echo ‘
‘;
var_dump($a);[/PHP]

Acum vă invit să vedem cum puterm parcurge cel mai uşor un şir. Pentru aceasta trebuie să ştim câte elemente are, nu? Putem folosi două funcţii: count sau sizeof. Parcurgerea unui şir o putem face cu structura FOR, explicată într-o lecţie trecută, dar şi cu structura FOREACH, care este specială pentru şiruri. Nu înseamnă că sunteţi constrâns să folosiţi FOREARCH, doar că e preferabil, e mai uşor. Codul de mai jos îl puteţi vedea în acţiune aici.

[PHP]$fructe=array(‘mere’,’pere’,’cirese’,’struguri’,’visine’);
echo ‘Lista fructelor: ‘;
for($i=0;$iReluare:

    ‘;
    foreach($fructe as $fruct)
    echo „
  • $fruct
  • „;
    echo ‘

‘;[/PHP]

Aţi observat că la prima afişare apare un inutil virgulă spaţiu după ultimul element? E normal: aşa am scris codul. Mai frumos ar fi să afişăm virgulă şi spaţiu după toate elementele unui şir, mai puţin ultimul! Cum facem? Păi am învăţat deja tot ce avem nevoie. Am făcut afişarea de două ori: mai întâi in extenso, comparând cu indexul dacă nu este ultimul (pentru că începe de la zero, compararea se face cu dimensiunea minus unu); mai apoi versiunea compactată, similară dar compactată. Ce iese? Click aici.

[PHP]$fructe=array(‘mere’,’pere’,’cirese’,’struguri’,’visine’);
echo ‘Lista fructelor: ‘;
for($i=0;$i‘;

echo ‘Lista fructelor: ‘;
for($i=0;$i‘;[/PHP]

Cu aceasta cred că primul contact cu şirurile poate să ia sfârşit. Vom vedea într-un alt material şiruri mai complexe.


Apreciază articolul:

1 stea2 stea3 stea4 stea5 stea (3 evaluări, media: 4,67 din 5)
Loading...Loading...

1 comentariu

  1. Liviu spune:

    Nu ar fi fost mai bine dacă traduceai ”array” ca fiind ”tablou” și nu ”șir”? :) Eviți și confuzia cu ”șir de caractere”… Fie vorba, uneori este mai bine să lăsăm anumiți termeni ”ne-traduși”…


Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile necesare sunt marcate *