Document, comentariu, eseu, bacalaureat, liceu si facultate
Top documenteAdmitereTesteUtileContact
      
    


 


Ultimele referate adaugate

Adauga referat - poti sa ne ajuti cu un referat?

Politica de confidentialitate



Ultimele referate descarcare de pe site
  CREDITUL IPOTECAR PENTRU INVESTITII IMOBILIARE (economie)
  Comertul cu amanuntul (economie)
  IDENTIFICAREA CRIMINALISTICA (drept)
  Mecanismul motor, Biela, organe mobile proiect (diverse)
  O scrisoare pierduta (romana)
  O scrisoare pierduta (romana)
  Ion DRUTA (romana)
  COMPORTAMENT PROSOCIAL-COMPORTAMENT ANTISOCIAL (psihologie)
  COMPORTAMENT PROSOCIAL-COMPORTAMENT ANTISOCIAL (psihologie)
  Starea civila (geografie)
 

Ultimele referate cautate in site
   domnisoara hus
   legume
    istoria unui galban
   metanol
   recapitulare
   profitul
   caract
   comentariu liric
   radiolocatia
   praslea cel voinic si merele da aur
 
despre:
 
Utilizarea tablourilor in PHP
Colt dreapta
Vizite: ? Nota: ? Ce reprezinta? Intrebari si raspunsuri
 

<titlu> l3c7cb
Utilizarea tablourilor</titlu>
<titlu>Scopuri</titlu>
• invatati sa creati un tablou
• invatati sa parcurgeti iterativ un tablou
• invatati sa lucrati cu functii lista
• invatati sa sortati un tablou
• invatati sa folositi tablouri in lucrul cu variabilele dintr-un formular

In Modulul 2 a fost prezentata notiunea de tablou, un tip de variabila special, care poate avea mai multe valori asociate. In cadrul acestui modul, veti invata mai multe despre utilizarea tablourilor.

<titlu>Crearea tablourilor</titlu>
Puteti crea un tablou PHP in doua moduri principale. Puteti atribui o valoare unei variabile dintr-un tablou sau puteti invoca functia array(). In aceasta sectiune vor fi explicate ambele metode de creare a unui tablou.

<titlu>Crearea unui tablou folosind atribuiri</titlu>
Modalitatea cea mai simpla de a crea un tablou este de a atribui o valoare unei variabile de tip tablou. Iata un exemplu simplu in acest sens:
$limbajeai = „Perl”;
$limbajeai = „PHP”;
$limbajeai =”Python”;

Parantezele drepte care urmeaza dupa numele variabilei indica limbajului PHP ca variabila $limbaje este o variabila de tip tablou. PHP stocheaza in mod automat valorile atribuite tabloului in celule numerotate succesiv, incepand de la $limbajea0i. Iata continutul tabloului, asa cum rezulta din cele trei instructiuni de atribuire:

0 => Perl
1 => PHP
2 => Python

Simbolul => arata ca unei valori ii este asociata o cheie, in acest caz, cheia 0 este asociata cu valoarea "Perl", cheia 1 este asociata cu valoarea "PHP", iar cheia 2 este asociata cu valoarea "Python". Puteti asimila tabloul cu un tabel, caz in care exem¬plul anterior este reprezentat astfel:




0 Perl
1 PHP
2 Python

Daca doriti, puteti scrie o instructiune de atribuire care specifica o valoare cheie, astfel incat sa puteti asocia o valoare cu un anumit element al tabloului. Sa luam in considerare urmatorul exemplu:

$limbajea0i = „Perl”;
$limbajea1i = „PHP”;
$limbajeai =”Python”;

Observati ca instructiunea finala de atribuire nu include nici o valoare de index. PHP asociaza valoarea "Python" cu urmatorul element consecutiv al tabloului:

0 => Perl
1 => PHP
2 => Python

Elementele unui tablou nu trebuie asociate unor chei consecutive. Iata un exemplu care demonstreaza acest fapt:

$limbajea10i = „Perl”;
$limbajea20i = „PHP”;
$limbajeai =”Python”;

Aceste instructiuni de atribuire determina urmatorul continut al tabloului:

10 => Perl
20 => PHP
21 => Python

Remarcati, similar cu exemplul anterior, ca valoarea " Python” este asociata urma¬torului element consecutiv din tablou.
Asa cum s-a explicat in Modulul 2, PHP nu va obliga sa folositi numere intregi pe post de chei. Puteti crea un tablou asociativ, cunoscut si sub numele de tablou indexat cu siruri, prin specificarea drept chei a unor siruri:

$limbajeaPHPi = „Ridicat”;
$limbajeaPythoni = „Mediu”;
$limbajeaPerli =”Redus”;

Prin instructiunile de mai sus, urmatoarele chei au fost atribuite urmatoarelor valori:

PHP => Ridicat
Python => Mediu
Perl=>Redus

Semnificatia utilizarii pe post de chei a unor valori intregi consecutive este aceea ca puteti folosi o bucla for simpla pentru a parcurge iterativ tabloul, cu alte cuvinte, pentru a examina valorile fiecaruia dintre elementele sale. Veti invata mai multe despre parcurgerea iterativa a tablourilor in sectiunea urmatoare, intitulata „Utili¬zarea functiei array()".

<titlu>Utilizarea functiei array()</titlu>
Dincolo de utilizarea instructiunilor de atribuire, cealalta modalitate principala de creare a unui tablou PHP consta in utilizarea functiei array(). Iata un exemplu simplu, care creeaza un tablou avand drept chei valori intregi consecutive:

$limbaje = array(„Perl”, „PHP”, „Python”);

Aceasta instructiune creeaza un tablou care contine urmatoarele asocieri:

0 => Perl
1 => PHP
2 => Python

Daca doriti sa asociati unei valori o anumita cheie, puteti folosi operatorul =>, astfel:

$limbaje = array(10=>„Perl”, „PHP”, „Python”);

Aceasta instructiune creeaza urmatorul tablou:
10 => Perl
11 => PHP
12 => Python

Ca si in cazul utilizarii unei instructiuni de atribuire pentru crearea unui tablou valorile cheilor nu trebuie sa fie consecutive si nici macar intregi:

$limbaje = array(„PHP”=>„Ridicat”,”Python” =>„Mediu”, ”Perl”=>”Redus”);

Aceasta instructiune creeaza urmatorul tablou:

PHP => Ridicat
Python => Mediu
Perl=>Redus

<Sfatul specialistului >
Intrebare: In cadrul altor limbaje de programare, este posibila crearea de tablouri multi-dimensionale. Se poate proceda astfel si in PHP?
Raspuns: Un tablou multi-dimensional poate fi asimilat, pur si simplu, unui tablou ale carui celule contin valori ale unui tablou; cu alte cuvinte, un tablou de tablouri. De exemplu, sa presupunem ca doriti sa caracterizati usurinta de invatare si popularitatea mai multor limbaje de scripting. Puteti reprezenta datele intr-un tabel, in urmatoarea forma:

<tabel>
*Limbaj
*Usurinta in invatare
*Popularitate

*PHP
*simplu
*popular

*Python
*simplu
*nepopular

*Perl
*dificil
*popular

Puteti reprezenta aceste date sub forma unui tablou PHP denumit $date, prin scrierea urmatoarelor instructiuni:

$datea"PHP"i = array("simplu", "popular");
$datea"Python"i = array("simplu", "nepopular");
$datea"PHP"i = array("dificil", "popular");

Sau puteti scrie urmatoarea instructiune:

$date = array("PHP"=>array(„simplu", "popular") ,
"Python"=>array("simplu","nepopular"),
"PHP"=>array("dificil", "popular"));
</sfatul specialistului>

<Test „la minut">
• Scrieti instructiuni de atribuire PHP care atribuie numele principalelor culori aditive (rosu, verde si albastru) unor chei numerotate consecutiv ale unui tablou denumit $culoare.
• Scrieti instructiuni de atribuire PHP care asociaza valorile 100, 1000 si 1000000 cheilor "suta", "mie" si "„milion" in cadrul unui tablou denumit $marime. </Test „la minut">

<titlu>Parcurgerea iterativa a unui tablou</titlu>
Cand ati stocat date intr-un tablou, puteti obtine acces la valoarea unui element al tabloului sau ii puteti modifica valoarea prin intermediul cheii asociate elemen¬tului. De exemplu, sa presupunem ca folositi urmatoarele instructiuni pentru a crea un tablou:

$xa0i = 1;
$xa1i = 10;
$xa2i = 1000;

Puteti obtine acces la valoarea asociata cheii l prin intermediul unei instructiuni ca aceasta:

$y = 3 * $xa1i;

Similar, puteti modifica valoarea asociata cheii 2 prin intermediul unei instructiunu ca aceasta:

$xa2i = 100

<nota>
Raspunsuri la test:
• $culoareai = "rosu";
$culoareai = "verde";
$culoareai = "albastru";
•$marimea"suta"i = 100;
$marimea"mie"i = 1000;
$marimea"milion"i = 1000000;</nota>

Uneori, in loc de a obtine accesul la un singur element al unui tablou sau de a-l modifica, doriti sa obtineti accesul la mai multe elemente ale tabloului. De exemplu, sa presupunem ca doriti sa determinati daca in tablou exista o anumita cheie sau valoare. Sau sa presupunem ca tabloul reprezinta salarii si doriti sa mariti fiecare valoare cu 10 procente. Operatii de acest gen implica parcurgerea iterativa a tablou¬lui sau, altfel spus, accesul la fiecare element al tabloului. Aceasta sectiune explica modul de iteratie prin tablouri secventiale si non-secventiale.

<titlu>Parcurgerea iterativa a unui tablou secvential</titlu>
Un tablou ale carui chei sunt valori intregi consecutive se numeste tablou secven¬tial. In general, valoarea cea mai mica a unei chei dintr-un tablou secvential este zero; totusi, puteti crea un tablou secvential folosind valoarea unu sau orice alta valoare intreaga ca valoare minima a cheii.
In cazul in care cunoasteti valoarea minima a cheii unui tablou secvential, puteti parcurge iterativ 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 a buclei. Functia count () returneaza numarul elementelor dintr-un tablou. Iata un exemplu simplu de iteratie intr-un tablou:

$limbaje = array(0=>”Perl”, 1=>”PHP”, 2 =>”Python”);
$limita = count($limbaje); for ($i = 0; $i < $limita; $i++)
A echo <BR>$i => $limbajeaii”;
S

Prima instructiune creeaza tabloul. Cea de-a doua instructiune obtine numarul elementelor din tablou. Instructiunea for foloseste variabila bucla $i pentru a parcurge iterativ tabloul; corpul instructiunii include o instructiune echo care afiseaza cheia si valoarea fiecarui element din tablou. Datele de iesire se prezinta astfel:

0 => Perl

1 => PHP
2 => Python

<titlu>Cautarea intr-un tablou secvential</titlu>
Pentru a examina modul de utilizare a iteratiilor, sa ne concentram asupra problemei de a determina daca un tablou contine o anumita valoare. Iata un exemplu:

$limbaje = array(0=>”Perl”, 1 =>”PHP”, 2 =>”Python”);
$cauta =”PHP”;
// se cauta in tabloul $limbaje valoarea $cauta
$limita = count($limbaje); for ($i = 0; $i < $limita ; $i++)
A echo „ <BR> Determinarea unei identitati cu $limbajea$ii;

if (cauta == $limbajea$ii)
A
„<BR>$cauta este un limbaj aprobat.”;
S
S

Prima instructiune creeaza tabloul in care se va cauta. Desigur, intr-o aplicatie iterativa reala, tabloul nu va fi initializat cu valori literale imediat anterior operatiei de cautare, intr-o aplicatie reala, continutul tabloului este supus la variatii.
Cea de-a doua instructiune atribuie valoarea "PHP" variabilei $cauta; in exemplu, se cauta in tablou valoarea stocata in variabila $cauta. Dupa comentariu, urmatoarea instructiune obtine numarul elementelor din tablou si stocheaza aceasta valoare in variabila $limita. Instructiunea for functioneaza ca mai inainte; de data aceasta insa, corpul sau contine alte instructiuni si se executa o alta operatie. O instructiune echo afiseaza valoarea fiecarui element al tabloului pe masura ce iteratia avanseaza. Instructiunea if testeaza fiecare element si afiseaza un mesaj daca valoarea elemen¬tului este una si aceeasi cu valoarea variabilei $cauta. Iata rezultatul rularii exemplului:

Determinarea unei identitati cu Perl
Determinarea unei identitati cu PHP
PHP este un limbaj aprobat.
Determinarea unei identitati cu Python

<titlu>Instructiunea break</titlu>
Observati ca iteratia continua chiar si dupa stabilirea unei identitati. Cand se cauta intr-un tablou, executia cautarii poate fi sistata dupa gasirea elementului dorit; continuarea iteratiei in tablou nu face decat sa iroseasca resursele calculatorului, fara a afecta rezultatele operatiei. Pentru a opri executia unei iteratii, puteti folosi instructiunea break, care determina incheierea imediata a buclei care o contine. Iata cum se poate revizui exemplul anterior, astfel incat sa includa o instructiune break:

for ($i = 0; $i < $limita ; $i++
A echo „<BR>Determinarea unei identitati cu $limbajea$ii”; if ($cauta == $limbajea$ii)
A
„<BR>$cauta este un limbaj aprobat.”; break;
S
S
Acum, dupa stabilirea unei identitati, instructiunea break provoaca sistarea buclei for. Iata datele de iesire rezultate, care acum omit examinarea inutila a elementului tabloului asociat cu limbajul "Python":

Determinarea unei identitati cu Perl
Determinarea unei identitati cu PHP
PHP este un limbaj aprobat.

<titlu>Instructiunea continue</titlu>
O instructiune corelata cu instructiunea break este continue. Instructiunea continue sisteaza iteratia curenta a buclei, determinand evaluarea imediata a expre¬siilor de incrementare si de test. Ca un exemplu, sa presupunem ca doriti sa cautati in tabloul $limbaje pentru a determina numarul limbajelor care au nume scurte, adica nume alcatuite din maximum patru caractere. Iata un exemplu care executa aceasta prelucrare a datelor:

$limbaje = array(0=>”Perl”, 1=>”PHP”, 2=>”Python”);
// Numara numele scurte
$scurt = 0;
$limita = count($limbaje); for ($i = 0;$i<$limita; $i++)
A
$n = strlen($limbajea$ii); echo „<BR>$limbajea$ii are $n caractere lungime.”; if ($n4> 4) continue;
$scurt++;
S echo „<BR>Au fost gasite $scurt limbaje cu nume scurte.”;

O instructiune de atribuire stabileste valoarea initiala a variabilei $scurt, folosita pentru a numara numele scurte gasite, la zero. Instructiunea for se aseamana celor folosite anterior. Corpul acestei instructiuni difera, desigur, de cele folosite anterior. Valoarea variabilei $n este stabilita ca fiind egala cu numarul caracterelor care compun numele limbajului, folosind functia strlen(), care calculeaza lungimea unui sir. Daca instructiunea if stabileste ca elementul curent al tabloului face referire la un limbaj cu nume lung, se executa instructiunea continue. Instructiunea continue determina trecerea iteratiei la urmatorul element din tablou; daca nu au mai ramas elemente in tablou, bucla for isi incheie executia. La finalizarea iteratiei, o instruc¬tiune echo afiseaza numarul numelor scurte de limbaje gasite in tablou. Iata rezultatul:

Perl are 4 caractere lungime.
PHP are 3 caractere lungime.
Pynton are 6 caractere lungime.
Au fost gasite 2 limbaje cu nume scurte.

<titlu>Parcurgerea iterativa a unui tablou non-secvential</titlu>
In unele limbaje de programare, parcurgerea unui tablou non-secvential este o operatie complicata. Cu toate acestea, PHP 4 include o instructiune foreach care simplifica iteratiile de acest gen. Instructiunea foreach are urmatoarea forma generala:

foreach (tablou as $cheie =>$valoare) AcorpS

Instructiunea parcurge in mod iterativ tabloul denumit Atablou, stabilind valori adecvate pentru valorile variabilelor $cheie si $valoare aferente fiecarui element al tabloului. Iata un exemplu simplu:

$limbaje = array(10=>”Perl”, 20=>”PHP”, 21=>”Python”);
// parcurge iterativ tabloul foreach ($limbaje as $index => $limbaj)
A echo „<BR>$index =>$limbaj”;
S

Remarcati ca instructiunea echo face pur si simplu referire la valorile variabilelor $index si $limbaj, carora li se atribuie in mod automat valorile cheii, respectiv elementului curent. Iata datele de iesire ale exemplului:

10 =>Perl
20 =>HP
21 =>Pynton

<Sfatul specialistului>
Intrebare: Cum pot parcurge in mod iterativ un tablou multi-dimensional?
Raspuns: Pentru a raspunde la aceasta intrebare, sa parcurgem iterativ un tablou multi-dimensional care contine urmatoarele date:

<tablou>
*Limbaj
*Usurinta in invatare
*Popularitate

*PHP
*simplu
*popular

* Python
*simplu
*nepopular

* Perl
* dificil
*popular
</tablou>

Tabloul poate fi creat folosind urmatoarele instructiuni PHP:
$datea"PHP"i = array(simplu", "popular");
$datea"Python"i = array("simplu", "nepopular");
$datea"PHP"i= array("dificil", "popular");

Pentru a parcurge tabloul in mod iterativ, folositi instructiuni foreach imbri¬cate:

foreach ($date as $limbaj => $valoare)
A foreach($valoare as $cheie =>$caracteristica)
A echo „<BR>$limbaj:$caracteristica”;
S
S

Instructiunea foreach exterioara obtine tabloul asociat cu fiecare limbaj; instructiunea foreach interioara parcurge iterativ caracteristicile limbajului. Iata rezultatul:

PHP: simplu
PHP: popular
Python: simplu
Python: nepopular
Perl: dificil
Perl: popular </Sfatul specialistului>

<Test „la minut">
• Care este instructiunea folosita pentru a parcurge in mod iterativ un tablou non-secvential?
• Care este functia ce returneaza numarul elementelor dintr-un tablou?
• Care este instructiunea folosita pentru a sista iteratia curenta a unei bucle?
• Care este instructiunea folosita pentru terminarea imediata a unei bucle?
</Test „la minut">

<titlu>Lucrul cu functii lista</titlu>

In afara de modalitatile de parcurgere iterativa a tablourilor, PHP ofera numeroase functii care va permit traversarea tablourilor, deplasandu-va inainte sau inapoi, dupa dorinta. Prima dintre aceste functii este current(), care returneaza valoarea curent al tabloului. Functia current() foloseste un pointer intern de tablou pe care PHP il creeaza pentru fiecare tablou. Cand creati un tablou, pointerul intern de tablou este configurat astfel incat sa faca referire la primul element al tabloului. Functiile next() si prev() modifica pointerul intern al tabloului si se pot folosi alaturi de functia current() pentru a parcurge un tablou. Functia next(), asa cum ii arata si numele*, modifica pointerul intern al tabloului astfel incat acesta sa faca referire la urmatorul element, in timp ce functia prev() modifica pointerul intern al tabloului astfel incat acesta sa faca referire la elementul anterior.
Iata un exemplu care prezinta modul de operare al functiilor mentionate:

$limbaje = array(10=>”Perl”, 20=>”PHP”,21=>”Python”);
$curent = current($limbaje); echo „<BR>functia current() a returnat $curent”;
$urmator = next($limbaje); echo „<BR>functia next() a returnat $urmator”;
$urmator = next($limbaje); echo „<BR>functia next() a returnat $urmator”;
$anterior = prev($limbaje); echo „<BR>functia prev() a returnat $anterior”;

Iata datele de iesire ale exemplului:

functia current() a returnat Perl functia next() a returnat PHP functia next() a returnat Python functia prev() a returnat PHP

Observati modul in care sunt utilizate functiile prev() si next() pentru deplasarea inapoi, respectiv inainte, in interiorul tabloului.
<nota>
Raspunsuri la test:
• foreach
• count()
• continue
• break
*In limba engleza next— urmator. (N.T.)</nota>

<titlu> Functia key () </titlu>
Functia key() este corelata cu functia current(). Daca functia current() retur¬neaza valoarea asociata elementului curent, functia key () returneaza cheia asociata elementului curent. Iata un exemplu care ilustreaza modul de operare al acestei functii:

$limbaje = array(10=>”Perl”, 20=>”PHP”, 21=>”Python”);
$curent = current($limbaje);
$cheie = key($limbaje); echo „<BR>functia current() a returnat $curent”; echo „<BR>functia key() a returnat $cheie”;

Datele de iesire ale exemplului sunt urmatoarele:

functia current() a returnat Perl functia key() a returnat 10

<titlu>Functia each()</titlu>
O alta functie utila in parcurgerea tablourilor este each (). Functia each () returneaza urmatoarea pereche cheie-valoare din tabloul specificat. Perechea cheie-valoare este returnata sub forma unui tablou asociativ cu patru elemente, dupa cum urmeaza:

<tabel>
*Cheie
*Valoare

*0
*Componenta cheie a perechii cheie-valoare curenta

*1
* Componenta valoare a perechii cheie-valoare curenta

*"key"
* Componenta cheie a perechii cheie-valoare curenta

*"value"
* Componenta valoare a perechii cheie-valoare curenta
</tabel>

Observati ca puteti folosi valoarea cheie „0" sau „cheie" pentru a obtine accesul la componenta cheie a perechii cheie-valoare; similar, puteti folosi valoarea cheie „1" sau „valoare" pentru a obtine accesul la componenta valoare a perechii cheie-valoare. Iata un scurt exemplu care ilustreaza modul de operare a functiei each ():

$limbaje = array(10=>”Perl”, 20=>”PHP”, 21=>”Python”);
$fiecare = each($limbaje);
$zero = $eacha1i;
$cheie = eacha‚key’i;
$valoare = $eacha‚value’i; echo „<BR>zero=$zero”; echo „<BR>unu=$unu”; echo „<BR>cheie=$cheie”; echo „<BR>valoare=$valoare”;

Datele de iesire ale acestui exemplu sunt urmatoarele: zero=10 unu=Perl cheie=10 valoare=Perl

<titlu>Functia list()</titlu>
O alta functie utila in lucrul cu tablouri este functia list(), care va permite sa atribuiti valori la numeroase variabile in cadrul unei instructiuni. Functia list() este deseori folosita cu functia each(), deoarece functia list() faciliteaza accesul separat la cheia si la valoarea returnate de functia each (). Forma generala de utilizare a functiei list() este urmatoarea:

list($var1,$var2,…,$varn)=valoare_tablou;

Fiecare dintre variabilele specificate, de la $var1 la $varn, primeste o valoare din tabloul valoare_tablou. Intr-un fel, functia list() este opusa functiei array(), deoarece functia list () imparte un tablou intr-o serie de valori scalare, in timp ce functia array() construieste un tablou dintr-o serie de valori scalare.
Iata un exemplu care ilustreaza modul de utilizare a functiei list():

$limbaje = array(10=>”Perl”, 20=>”PHP”, 21=>”Python”); list($cheie, $valoare) = each($limbaje); echo ”<BR>cheie=$cheie, valoare=$valoare”;
$urmator = next($limbaje); echo <BR>urmator=$urmator;

De asemenea, iata datele de iesire ale exemplului:

cheie =10, valoare = Perl urmator = Python

<Test „la minut">
• Care este functia ce va permite sa atribuiti valori mai multor variabile simultan?
• Care este functia ce returneaza componenta cheie a unei perechi cheie-valoare asociata elementului curent al tabloului?
• Care este functia ce mareste valoarea unui pointer intern de tablou?</test la minut>

<Sfatul specialistului>
Intrebare: PHP mai contine si alte functii pentru lucrul cu tablourile?
Raspuns: Da. PHP contine peste 40 de functii pentru lucrul cu tablourile, cu mult mai multe decat pot fi descrise in acest capitol. De exemplu, functia array_search() faciliteaza cautarea intr-un tablou. Pentru informatii despre aceasta functie si despre alte functii utilizate in lucrul cu tablouri, examinati documentatia PHP in varianta electronica, la adresa https://www.php.net.
</sfatul specialistului>

<nota>
Raspunsuri la test: list() key() next()

<titlu>Sortarea tablourilor</titlu>

Sortarea reprezinta o alta operatie frecvent aplicata tablourilor. PHP furnizeaza o suita de functii care faciliteaza sortarea unui tablou. De exemplu, un tablou poate fi creat dupa cum urmeaza:

$limbaje = array(10=>”Perl”, 20=>”PHP”, 21 =>”Python”);

Apoi, doriti sa sortati tabloul in functie de numele limbajului de programare. Pentru aceasta, pur si simplu invocati functia sort():

Sort($limbaje);

Dupa sortare, continutul tabloului apare asa cum se poate vedea mai jos:

0 => PHP
1 =>Perl
2 =>Python

Observati ca secventa de sortare sau secventa de aranjare (cum este numita uneori) este sensibila la diferenta intre majuscule si minuscule. Deoarece litera H mare este sortata anterior literei e mic, PHP apare inainte de Python in datele de iesire sortate.
Tabelul 8-1 prezinta pe scurt functiile de sortare ale limbajului PHP, inclusiv rezultatul aplicarii fiecarei functii tabloului folosit in exemplul anterior.

<tabel 8-1 Un sumar al functiilor de sortare ale limbajului PHP>
*Operatie
*Functie
*Rezultat

*Sortarea unui tablou in functie de valoare
*sort()
*0 => PHP
1 =>Perl
2 => Python

*Sortarea unui tablou asociativ in functie de valoare
*asort()
*20 => PHP
10 => Perl
21 => Python |

*Sortarea unui tablou dupa valoare, in ordine descendenta

*rsort()
*0 => Python
1 => Perl
2 => PHP

*Sortarea unui tablou asociativ dupa valoare, in ordine descendenta
*Arsort()
*21 => Python
10 => Perl
20 => PHP

*Sortarea unui tablou sau a unui tablou asociativ in functie de cheie
*ksort()
*10 => Perl
20 => PHP
21 => Python

*Sortarea unui tablou sau a unui tablou asociativ in functie de cheie, in ordine descendenta
*Krsort()
*21 => Python
20 => PHP
10 => Perl
</tabel 8-1>

<Sfatul specialistului>
Intrebare: Sa presupunem ca doresc sa execut o cautare fara sensibilitate la diferenta intre majuscule si minuscule. Cum pot proceda?
Raspuns: O modalitate ar fi utilizarea functiei natcasesort(), care sorteaza un tablou folosind o „ordine naturala", care nu este sensibila la diferenta intre majuscule si minuscule. O alta modalitate consta in a utiliza functia usort() sau una dintre functiile sale conexe , in speta uksort() si uasort(). Aceste functii va permit sa definiti o secventa de aranjare personalizata, pe care o specificati prin desemnarea unei functii care compara valorile in conformitate cu secventa de aranjare. Functia usort() sorteaza valorile din tablou si returneaza un tablou secvential; functia uksort() sorteaza cheile tabloului, iar functia uasort() sorteaza un tablou asociativ.
De exemplu, urmatoarele instructiuni creeaza un tablou si il sorteaza intr-o maniera insensibila la diferenta intre majuscule si minuscule:
$limbaje = array("Perl", "PHP", "Python"); usort($limbaje, "strcmpcase");

Functia strcmpcase() este o functie din biblioteca PHP care compara doua siruri fara a tine cont de marimea literelor (majuscule sau minuscule). Functia returneaza o valoare negativa daca primul sir este mai mic decat al doilea, zero daca sirurile sunt identice, respectiv o valoare pozitiva daca primul sir este mai mare decat al doilea.
Puteti implementa o secventa de aranjare personalizata scriind propria dumneavoastra functie si specificand numele acesteia ca argument al functiei usort() sau al uneia din functiile sale conexe. Pur si simplu scrieti o functie care preia doua argumente sir si returneaza -l, 0 sau +1, in functie de rezultatul compa¬ratiei intre valorile sir.
Pentru mai multe informatii despre functia usort() si despre functiile sale conexe, examinati documentatia in varianta electronica, la adresa https://www.php.net.
</sfatul specialistului>

<Test „la minut">
• Care este functia ce trebuie folosita pentru a sorta un tablou asociativ in ordine descrescatoare?
• Care este functia ce trebuie folosita pentru a sorta un tablou in ordine ascendenta, in functie de valoarea cheii? </Test „la minut">

<nota>
Raspunsuri la test:
• arsort()
• ksort()
</nota>

<titlu>Proiect 8-1: O reluare a formularului cu persoane de contact</titlu>
In cadrul acestui proiect, veti vedea un exemplu simplu care include parcurgerea iterativa a tablourilor si sortarea acestora. Proiectul foloseste sistemul de contact prin e-mail utilizat in proiectele anterioare. Formularul de contact prin e-mail furnizeaza spatiu pentru introducerea numelor copiilor persoanei de contact. Acest proiect prezinta modul de sortare a numelor in ordine alfabetica si modul de afisare a numelor respective.

<titlu>Scopurile proiectului</titlu>
• Prezentarea modului de utilizare a unui tablou ca variabila de formular
• Prezentarea modului de parcurgere iterativa a unui tablou
• Prezentarea modului de sortare a unui tablou

<titlu>Pas cu pas</titlu>
1. Plasati urmatorul script PHP intr-un fisier denumit p-8-1 .php si incarcati acest fisier in serverul dumneavoastra PHP:

<?php foreach ($copil as $index => $copil)
A echo "<BR>copila$indexi=$copil";
S echo "<BR>";

sort($copii);

foreach ($copii as $index => $copil)
A echo "<BR>copila$indexi=$copil";
S
?>

2. Plasati urmatorul text HTML intr-un fisier denumit p-8-1 .html si incarcati acest fisier in serverul dumneavoastra, plasandu-l in acelasi catalog ca si fisierul p-8-1.php:

<HTML>
<HEAD>
<TITLE>Proiect 8-1</TITLE>
</HEAD>
<BODY>
<! -- Fisier p-8-1.html -->
<FORM METHOD=”POST” ACTION=”p-8-1.php”>
<H1>Informatii privind persoana de contact</H1>
<TABLE>
<TR>
<TD>Numele copiilor</TD>
</TR>
<TR>
<TD><INPUT TYPE=”TEXT” NAME=”copiiai”></TD>
</TR>
<TR>
<TD><INPUT TYPE=”TEXT” NAME=”copiiai”></TD>
</TR>

<TR>
<TD><INPUT TYPE=”TEXT” NAME=”copiiai”></TD>
</TR>
<TR>
<TD><INPUT TYPE=”TEXT” NAME=”copiiai”></TD>
</TR>
<TR>
<TD><INPUT TYPE=”TEXT” NAME=”copiiai”></TD>
</TR>
</TABLE>
<BR>
<BR>
<BR>
<INPUT TYPE=”SUBMIT” VALUE=”Trimite”>
<BR>
<BR>
<INPUT TYPE=”RESET” VALUE=”Sterge datele”>
</FORM>
</BODY>
</HTML>

3. Alocati un timp studiului paginii HTML. Casetele text sunt nume care fac referire la o variabila de tip tablou PHP. De asemenea, parcurgeti scriptul PHP, studiind modul de functionare a iteratiei care afiseaza numele copiilor.
4. Orientati un browser Web spre adresa URL a fisierului HTML incarcat anterior. Ecranul browserului trebuie sa fie asemanator celui prezentat in continuare. Introduceti valori pentru numele copiilor si apoi executati clic pe butonul „Trimite".
5. La executia scriptului, acesta afiseaza numele copiilor in ordinea in care au fost introduse. Apoi, numele sunt sortate si afisate in ordine sortata. Un rezultat caracteristic al operatiei de sortare este prezentat in continuare.

<ecran>
Contact Information
<campuri>
Childrens Names:
Able
Charley
Baker
Edward
Delta
</campuri>
<buton> submit</buton>
<buton> Clear the form </buton>
</ecran>

<ecran> childa0i=able childa1i=charley childa2i=baker childa3i=edward childa4i=delta

childa0i=able childa1i=charley childa2i=baker childa3i=edward childa4i=delta
</ecran>

<Test de evaluare>
1. Scrieti instructiuni care creeaza un tablou denumit $pop, care asociaza numele mai multor orase mari cu numarul locuitorilor acestora.
2. Scrieti o instructiune for care parcurge in mod iterativ un tablou secvential denumit $pitici, unde cheia minima are valoarea unu. Corpul instructiunii for trebuie sa afiseze numele fiecarui element al tabloului $pitici. Aveti grija la scrierea expresiei de test, care trebuie sa reflecte faptul ca valoarea cea mai mica a unei chei este unu, nu zero.
3. Scrieti o instructiune foreach care cauta in tabloul $state un element a carui cheie are aceeasi valoare ca si variabila $abrev. Afisati valoarea elementului corespunzator, nu cheia acestuia.
4. Scrieti o instructiune care sorteaza tabloul asociativ $pop in ordine crescatoare, in functie de valoare.</Test de evaluare>


Colt dreapta
Creeaza cont
Comentarii:

Nu ai gasit ce cautai? Crezi ca ceva ne lipseste? Lasa-ti comentariul si incercam sa te ajutam.
Esti satisfacut de calitarea acestui document, eseu, cometariu? Apreciem aprecierile voastre.

Nume (obligatoriu):

Email (obligatoriu, nu va fi publicat):

Site URL (optional):


Comentariile tale: (NO HTML)


Noteaza documentul:
In prezent fisierul este notat cu: ? (media unui numar de ? de note primite).

2345678910

 
Copyright© 2005 - 2024 | Trimite document | Harta site | Adauga in favorite
Colt dreapta