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


Array-urile (şirurile) sunt prea importante ca să trecem foarte rapid. Mai zăbovim deci la array-urile simple, adică unidimensionale. Vă amintiţi că în articolul trecut defineam la un array numele variabilei şi imediat şi valorile (între paranteze). Dar poate un şir se construieşte dinamic! În astfel de cazuri îl putem defini (îi spunem numele) iar valorile le vom indica ulterior. Un exemplu banal: $sir[10]=”banane”;

Mai jos, în scop didactic, să vedem cum creăm un şir în care să păstrăm pătratele primelor 10 numere naturale. Apoi vedem cum putem adăuga manual (adică nu generat într-o buclă) nişte valori. Putem să omitem indexul, caz în care se va pune automat (mai întâi pe poziţia 0 – nu aţi uitat, nu?, că şirurile încep cu indexul de la zero – apoi pe unu ş.a.m.d.). Verificaţi aici ce produce codul de mai jos.

[PHP]$patrate=array();
for($i=1;$i<=10;$i++) $patrate[$i]=$i*$i; echo "

Patrate:

„;
print_r($patrate);

$fructe=array();
$fructe[0]=”mere”;
$fructe[1]=”pere”;
$fructe[2]=”cirese”;
$fructe[3]=”prune”;
$fructe[4]=”gutui”;
echo „

Fructe:

„;
print_r($fructe);

$firme=array();
$firme[]=”Microsoft”;
$firme[]=”Google”;
$firme[]=”Yahoo”;
echo „

Firme:

„;
print_r($firme);[/PHP]

Şi acum altceva interesant: există o generalizare a indecşilor numerici cum am văzut până acum. În imaginea folosită de profesorul meu la liceu, vagoanele erau numerotate de la 0 la … Dar putem avea şi alte cazuri: primul vagon îl numim „a”, al doilea „doi”, al treilea 444 ş.a.m.d. Pentru moment pare fără sens, dar în practică, la un moment dat, vom vedea utilitatea. Mai jos vedeţi cele două moduri de definire pentru aceste şiruri asociative (care asociază unei chei, ex „m”, o valoare, ex „mere”). Codul în execuţie îl puteţi vedea aici. Observaţi că extragerea valorii unui element se face similar, indicând între paranteze drepte cheia, indexul generalizat: echo $sir[„cheie”];

[PHP]$fructe=array();
$fructe[„m”]=”mere”;
$fructe[„p”]=”pere”;
$fructe[„c”]=”cirese”;
$fructe[„v”]=”visine”;
$fructe[„g”]=”gutui”;
echo „

Fructe:

„;
print_r($fructe);
echo „

Prefer „.$fructe[„v”].”.

„;

$fructe2=array(
„m”=>”mere”,
„p”=>”pere”,
„c”=>”cirese”,
„v”=>”visine”,
„g”=>”gutui”);
echo „

Din nou fructe:

„;
print_r($fructe2);
echo „

Prefer „.$fructe[„v”].”.

„;

foreach($fructe as $litera=>$fruct)
echo $litera.’=>’.$fruct.’
‘;[/PHP]

La finalul codului de mai sus am introdus şi modul de parcurgere cu FOREACH a acestor şiruri asociative. (Între paranteze fie spus: în documentaţia PHP în română array-urile sunt traduse ca tablouri, cum mi se sugera şi într-un comentariu. Mi-am amintit că sub numele de tablouri le-am învăţat şi eu – nu PHP, ci la programare. Dar azi mi se pare foarte straniu să le spun tablouri. Voi permuta des denumirile nu ca să vă ameţesc ci pentru a sublinia că sunt echivalente.)

De interes ar putea fi şi problema eliminării unor valori dintr-un array, fie el normal sau asociativ. Tentaţia este să folosim unset, ca la orice variabilă. Câteva materiale pe net consultate îşi exprimă rezerve faţă de această metodă, că ar lăsa „găuri” în şiruri. Altele folosesc unset fără probleme. Mai jos vedeţi un cod de test în care eliminarea merge fără probleme. Pentru a sublinia aceasta am şi afişat numărul de elemente înainte şi după eliminarea unui element. Codul în execuţie îl puteţi vedea aici. (Eventualii guru ai PHP-ului sunt rugaţi să lămurească în comentarii când unset poate fi problematic.)

[PHP]$cifre=array(0,1,2,3,4,5,6,7,8,9);
echo „

Cifre: („.sizeof($cifre).”)

„;
print_r($cifre);
unset($cifre[3]);
echo „

Din nou cifre: („.sizeof($cifre).”)

„;
print_r($cifre);

$fructe=array(
„m”=>”mere”,
„p”=>”pere”,
„c”=>”cirese”,
„v”=>”visine”,
„g”=>”gutui”,
„s”=>”struguri”,
„l”=>”lamai”);
echo „

Fructe: („.sizeof($fructe).”)

„;
print_r($fructe);
unset($fructe[„c”]);
echo „

Din nou fructe: („.sizeof($fructe).”)

„;
print_r($fructe);[/PHP]

Vom continua să mai vorbim despre şiruri = array-uri.


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 *