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


Am vorbit deja de două ori despre array-uri unidimensionale. Dar nimeni nu ne opreşte să facem şiruri mai complexe. Spuneam deja: elementul unui şir poate să fie alt şir; iar elementul acestuia la rândul lui un şir. Ş.a.m.d. În exemplul de mai jos vedem un array total neobişnuit: primul lui element este tot un array, asociativ, pe când al doilea este un array obişnuit. Da, PHP nu „tuşeşte” la astfel de combinaţii. Există cazuri în care o astfel de libertate este necesară… dar de cele mai multe ori folosim structuri mai… (logic) structurate :) .

Revenind la cod: intuiţi ce va afişa $romania[0][‘imn’]? Se ia primul element al şirului $romania, care este un şir asociativ. Se caută în el cheia „imn” şi se returnează ce îi este asociat acestei chei. Mai exact: „Desteapta-te, romane!” Dar $romania[1][2] ce va afişa? Este vorba de al doilea element al şirului $romania, care este un şir obişnuit – din el luăm elementul cu indexul 2, adică al treilea (pentru că numărătoarea începe de la zero): drept urmare se va afişa „Timisoara”. Dacă vreţi să vedeţi rezultatul afişat de codul de mai jos mergeţi aici.

[PHP]$romania=array(
array(
‘capitala’=>’Bucuresti’,
‘limba’=>’romana’,
‘imn’=>’Desteapta-te, romane!’,
‘moneda’=>’leu’
),
array(‘Iasi’,’Cluj-Napoca’,’Timisoara’,’Brasov’,’Constanta’)
);
echo ‘

Detalii

‘;
foreach($romania[0] as $cheie=>$valoare)
echo $cheie.’ – ‘.$valoare.’
‘;
echo ‘

Orase

    ‘;
    for($i=0;$i‘.$romania[1][$i].’

    ‘;
    echo ‘

‘;[/PHP]

Acum să vedem o problemă şcolărească: generarea tablei înmulţirii. Vom folosi un singur şir, bidimensional (sau matrice), în care vom memora valorile. Noi vom putea vorbi de linii şi coloane în această matrice, printr-o asociere logică. Astfel, pe prima linie vom avea multipli lui 1, pe a doua multipli lui 2… pe a noua multipli lui 9. În a doua parte a codului avem şi o afişare care ne ajută să vedem array-ul. Click aici pentru a vedea rezultatul.

[PHP]$tabla=array();
for($i=1;$i<10;$i++){ $tabla[$i]=array(); for($j=1;$j<10;$j++) $tabla[$i][$j]=$i*$j; } echo 'TABLA INMULTIRII

‘;
for($i=1;$i<10;$i++){ echo '
‘;
for($j=1;$j<10;$j++) echo '

‘;
echo ‘

‘;
}
echo ‘

‘.
$tabla[$i][$j].’

‘;[/PHP]

Trecem la un alt exemplu. Să zicem că a avut loc un concurs la care au participat cinci grupe cu număr diferit de membri. Fiecare a obţinut un scor, dar trebuie să facem media ca să fie cinstit (grupele nefiind, repet, egale). Am scris intenţionat codul puţin mai „aiurea”. De exemplu am făcut suma tuturor elementelor unui subşir. De ce? Pentru că forţând la (integer) elementele, primul ca text va deveni zero, deci nu influenţează suma 😉 . Apoi la $medii nu am folosit nici un index la popularea lui cu valori. De ce? Am explicat într-un material trecut (se pune automat de la 0 începând). Studiaţi puţin codul şi rezultatul îl puteţi vedea aici.

[PHP]$grupe=array(
array(„Grupa 1”,8,6,9,10,3,6),
array(„Grupa 2”,4,10,3,5,6),
array(„Grupa 3”,10,9,8,8,10),
array(„Grupa 4”,4,7,8,5,6,6),
array(„Grupa 5”,4,7,3,4,5),
);
$medii=array();
foreach($grupe as $grupa){
$suma=0;
foreach($grupa as $nota)
$suma+=(integer)$nota;
$medii[]=$suma/(sizeof($grupa)-1);
}
for($i=0;$i‘;[/PHP]

Şi ultimul exemplu pe astăzi! Avem două şiruri (de data asta simple): primul cu olimpicii la matematică, al doilea cu olimpicii la română. Cum putem afla care sunt olimpici la ambele materii? Vedeţi codul de mai jos. În acţiune aici.

[PHP]$mate=array(„Ioana”,”Mircea”,”Bianca”,”Vasile”,”Maria”,”Mariana”,”Anamaria”);
$romana=array(„Viorica”,”Maria”,”Simona”,”Vasile”,”Mircea”,”Tudor”,”Victor”,”Codruta”);
$biolimpici=array();
foreach($mate as $bunlamate)
foreach($romana as $bunlaromana)
if($bunlamate==$bunlaromana)
$biolimpici[]=$bunlamate;
print_r($biolimpici);[/PHP]

În acest moment ar trebui să ziceţi „aha, mi-e destul de clar cu şirurile”. Dacă nu, atunci lucraţi mai mult. Imaginaţi-vă probleme. Faceţi intersecţia a trei şiruri, pentru a afla „tri-olimpicii”. Generaţi o matrice care să aibă 0 şi 1 echivalent la alb şi negru pe o tablă de şah. Ş.a.m.d. Mai apoi noi vom trece la funcţii pe şiruri. Vom vedea că PHP ne uşurează munca punându-ne la dispoziţie tot felul de funcţii interesante.


Apreciază articolul:

1 stea2 stea3 stea4 stea5 stea (Neevaluat încă)
Loading...Loading...

0 comentarii


Lasă un răspuns

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