Documente Academic
Documente Profesional
Documente Cultură
Taguri PHP
Scripturile PHP sunt destinate generarii dinamice de continut in paginile de Web. De aici rezulta
faptul ca un astfel de script trebuie inclus intr-o pagina HTML. In acest scop pot fi folosite mai
multe tipuri de tag-uri HTML dupa cum urmeaza:
• stilul "scurt":
Avantajul acestui stil este simplitatea. De aici rezulta o visteza mai mare de scriere a
codului.
• stilul XML:
Acest stil este compatibil cu documente conforme cu standardul XML (Extensible Markup
Language). Datorita raspandirii in continua crestere a acestui standard in continuare se
va prefera acest stil.
• stilul SCRIPT:
Acest stil este destinat celor obisnuiti cu scrierea de cod JavaScript sau VBScript. Este util
daca se foloseste un editor HTML care are probleme cu alte stiluri de tag-uri.
• stilul ASP:
Acest stil este similar cu cel folosit la ASP (Active Server Pages). Este util daca se
foloseste un editor HTML care genereaza cod ASP.
Texul care apare intre tagul de inceput si cel de incheiere (indiferent de stil) va fi interpretat ca
script PHP. Textul care apare in afara acestor taguri va fi tratat ca si cod HTML obisnuit.
Codul PHP nu va fi vizibil in sursa trimisa de serverul Web catre navigatorul clientului. Acest cod
va fi interpretat de catre modulul PHP din server si doar textul generat de acest script va fi
trimis mai departe de catre server.
La scrierea codului, instructiunile PHP din script vor fi terminate printr-un separator punct si
virgula ';' asemanator celor din limbajul C, C++ sau Java. Omiterea acestul separator va genera
o eroare de sintaxa.
Interpretorul de PHP va ingnora in schimb spatiile dintre instructiuni sau dintre elementele unei
instructiuni. Spre exemplu, secventele:
mircea.neamtu@ulbsibiu.ro.
si
Pentru claritatea codului se obisnuieste sa se adauge comentarii in care sa se explice rolul liniilor
respective. Interpretorul de PHP va ignora textul din comentarii, el avand doar rolul de a ajuta
programatorul in dezvoltarea codului respectiv. Comentariile pot si adaugate in trei moduri:
• stilul C: Comentariul se poate intinde pe mai multe linii si este cuprins intre semnele '/*'
si '*/'. El se poate insera chiar si in mijlocul unei expresii dar nu poate fi imbricat in alt
comentariu.
• stilul C++: Comentariul se intinde pe o singura linie, de la aparitia semnului '//' pana la
sfarsitul liniei curente.
• stilul Shell: Comentariul se intinde pe o singura linie, de la aparitia semnului '#' pana la
sfarsitul liniei curente.
Pentru a exemplifica generarea dinamica de continut se va utiliza functia date() pentru a afisa
data si ora la care a fost interpretat scriptul pe server:
<HTML>
<HEAD>
<TITLE>Activitate 1.</TITLE>
</HEAD>
<BODY>
<H2>Exemplu de generare dinamica de cod.</H1><P>
Linia urmatoare este generata de PHP:<P>
Activitate 1 <?php
echo "Data curenta pe server: ";
echo date("H:i, jS F"); // se obtine data si ora curenta cu ajutorul functiei date()
echo "<BR>";
?>
</BODY>
</HTML>
Incarcati fisirul direct in navigator (prin File/Open) si apoi copiati fisierul in directorul htdocs al
serverului de Web si incarcati adresa http://localhost/a2121.php
In plus, PHP suporta si tipurile pdfdoc respectiv pdfinfo pentru a asigura suport pentru PDF
(standardul Portable Document Format).
PHP este un limbaj slab tipizat. In limbajele puternic tipizate, o variabila poate retine un singur
tip de date pe toata durata sa de viata, tip asignat la declararea acelei variabile. In PHP
mircea.neamtu@ulbsibiu.ro.
varibilele nu trebuie declarate explicit (ele sunt considerate ca fiind declarate implicit la prima lor
utilizare in cod), iar tipul de date asignat este determinat de valoarea retinuta in acel moment.
Urmatoarele linii de cod sunt corecte in PHP (numele variabilelor PHP sunt prefixate de semnul
$):
$var1 = 1;
$var1 = "sirul 1";
Tipul datelor extrase din variabile poate fi schimbat fortat (casting sau conversie de tip) in
expresiile unde acestea intervin. Acest lucru se face prin precizarea noului tip intre paranteze
rotunde in fata variabilei respective:
$var1 = 1;
$var2 = (double)$var1 + 3.52;
Identificatorii sunt cuvinte care denota entitati intr-un program. Exemple de identificatori sunt:
numele de variabile, de functii sau de clase. In PHP identificatorii trebuie sa respecte
urmatoarele reguli:
• Identificatorii pot fi de orice lungime si pot fi formati din litere, cifre, liniuta de subliniere
sau semnul dolar.
• Identificatorii nu pot incepe cu o cifra.
• Identificatorii sunt de tip "case sensitive" (tin cont de litere mici-mari). Spre exemplu,
$numepers este diferit de $numePers. Singurii identificatori care nu respecta aceasta
regula sunt cei care denota nume de functii PHP predefinite.
Constantele de tip valoare sunt precizate direct in expresii dependent de tipul lor:
Constantele cu nume se aseamana cu varibilele, dar valoarea lor nu poate fi schimbata de-a
lungul programului. Pentru a face codul scris mai lizibil se obisnuieste ca numele varibilelor sa
fie scrise in intregime cu litere mari. O diferenta notabila fata de variabile este aceia ca numele
acestora nu sunt precedate de semnul $. Declararea cosntantelor se face cu ajutorul cuvantului
cheie define.
...
define("PI",3.14);
$unUnghi = PI;
$altUnghi = 2*PI;
Variabilele sunt locatii de memorie desemnate printr-un identificator care incepe cu semnul $.
Ele permit memorarea valorilor de diverse tipuri. Tipul unei variabile PHP poate fi modifcat in
momentul cand i se asigneaza o valoare. Declararea variabilelor utilizator nu trebuie facuta
explicit. O variabila se considera declarata implicit prima data cand este folosita.
mircea.neamtu@ulbsibiu.ro.
Pentru a asigna o valoare unei variabile se va folosi operatorul = sub forma $variabila =
expresie. Daca $variabila nu exista ea va fi creata in prealabil apoi i se va asigna valoarea
expresiei.
Varibilele referinta permit schimbarea numelui unei variabile in mod dinamic. Acest lucru se face
prin utilizarea valorii unei varibile pe post de nume de variabila. Indirectarea se realizeaza prin
utilizarea marcajului dolar '$' in fata numelui variabilei referinta, ca si in exemplul urmator:
$var1 = 5;
$var2 = "var1";
echo "Valoarea din var1 este ";
echo $var1;
echo " sau ";
echo $$var2;
In acest exemplu notatia $$var2 a fost folosita pentru a desemna valoarea retinuta de varibila
$var1.
Prin domeniul de valabilitate a unei variabile se intelege locurile in care o variabila poate fi
folosita (este vizibila) dupa ce a fost creata. Domeniile definite de PHP sunt urmatoarele:
• Global - varibilele globale, definite in afara functiilor sunt vizibile in tot fisierul curent, mai
putin in interiorul functiilor.
• Locale unei functii - variabilele create in functii sunt vizibile doar in interiorul acestora.
• Globale in interiorul unei functii - acest tip de varibile sunt folosite pentru a accesa
variabilele globale cu acelasi nume.
Principalul mecanism de colectare a datelor de la utilizatori prin intermediul unui site Web il
reprezinta formularele HTML (HTML forms). Din acest motiv, limbajul PHP pune accent pe
facilitarea accesului la aceste date.
Un formular HTML cuprinde campuri in care utilizatorul (cel care acceseaza pagina) poate
introduce date. Pentru procesarea acestor date formularul defineste o actiune numita submit
(trimitere), care corespunde de obicei apasarii unui buton cu acelasi titlu. Rezultatul acestei
actiuni este accesarea unei alte pagini (pagina tinta - target) care va primi automat valorile
completate in campurile formularului si le va prelucra. In cadrul subiectului prezentat, paginile
tinta ale formularelor vor fi fisiere PHP, paginile cuprinzand formularele putand fi fisiere PHP sau
HTML.
In PHP datele dintr-un formular HTML pot fi accesate prin doua metode.
Prima metoda, mai simpla dar mai inceata si mai nesigura, consta in folosirea varibilelor
inregistrate global. In acest fel numele campurilor dintr-un formular HTML devin automat
varibile PHP, cu valori setate corespunzator, in pagina tinta a formularului. Transmiterea se face
asemanator cu transmiterea parametrilor spre functii. Pentru a putea folosi aceasta metoda
trebuie ca fisierul de configurare php.ini sa aiba setarea register_globals pe valoarea "On".
A doua metoda presupune obtinerea valorilor din doua tablouri create automat si denumite
$HTTP_POST_VARS, respectiv $HTTP_GET_VARS corespunzator metodei de trimitere din
formular spre server (post sau get). Indicele de acces in tablou va fi chiar numele campului dorit
din formular.
mircea.neamtu@ulbsibiu.ro.
Din motive de claritate in general se utilizeaza prima metoda. In schimb, in scripturile
profesionale, unde viteza si securitatea sunt determinante, a doua metoda este de preferat.
<HTML>
<HEAD>
<TITLE>Activitate 2 (form)</TITLE>
</HEAD>
<BODY>
<FORM name="primulForm" method="post" action="a2162.php">
<P>Date personale
<P>Nume <INPUT type="text" name="numePers" size="36"
maxlength="36"><BR>
Prenume <INPUT type="text" name="prenumePers" size="36"
maxlength="36"><BR>
Mijlocul de transport preferat
<SELECT name="transport">
<OPTION>Masina</OPTION>
<OPTION>Trenul</OPTION>
<OPTION>Avionul</OPTION>
<OPTION>Vaporul</OPTION>
</SELECT>
<P> <INPUT type="submit" name="trimit" value="Submit">
<INPUT type="reset" name="sterg" value="Reset">
</FORM>
</BODY>
Activitate 2 </HTML>
<HTML>
<HEAD>
<TITLE>Activitate 2 (procesare)</TITLE>
</HEAD>
<BODY>
<H1>Prelucrare date din formularul a261.html</H1>
<HR>
<?php
echo "Nume persoana: ".$numePers."<BR>";
echo "Prenume persoana: ".$prenumePers."<BR>";
echo "Mijloc de transport preferat: ".$transport."<BR>";
$nume=$numePers." ".$prenumePers;
echo $nume." prefera sa calatoreasca cu ".$transport."."."<BR>";
?>
<HR>
</BODY>
</HTML>
mircea.neamtu@ulbsibiu.ro.
B) Creati un formular HTML tip sondaj de opinie intr-un domeniu ales de dumneavoastra. Scrieti apoi un fisier PHP care
sa prelucreze acest formular afisind datele personale si optiunile marcate. Raspunsul la aceasta tema va consta in numele
celor doua fisiere si observatiile referitoare la problemele intampinate
Operatorii sunt simboluri care pot fi utilizate pentru a efectua operatii asupra unor varibile si
constante de diverse tipuri. Entitatile asupra carora se aplica un operator se numesc operanzi.
Un operator poate avea unul, doi sau chiar trei operanzi. Majoritatea operatorilor sunt binari (au
doi operanzi). In general operatorii sunt clasificati functie de tipul datelor asupra carora
actioneaza.
Operatorii aritmetici provin din matematica si actioneaza asupra datelor de tip numeric.
Acestia sunt:
$a = 5;
$b = $a++; // b = 5, a = 6
$c = ++$a; // c = 7, a = 7
$d = 4 + --$a; // d = 10, a = 6
$e = 4 + --$c; // e = 11, c = 6
Daca operatorii aritmetici se aplica asupra unor valori de tip string, PHP va incerca conversia
acestora in numere. Daca conversia nu reuseste, sirurile sunt convertite la valoarea 0.
<HTML>
<HEAD>
<TITLE>Activitate 2.2.1.1.</TITLE>
</HEAD>
<BODY>
<H2>Operatori aritmetici.</H1><P>
<?php
mircea.neamtu@ulbsibiu.ro.
$a = 3;
$b = 11;
$c = 4.7;
echo "a = "; echo $a; echo "<BR>";
echo " b = "; echo $b; echo "<BR>";
echo " c = "; echo $c; echo "<BR>";
echo "a - b = "; echo $a - $b; echo "<BR>";
echo "a * c = "; echo $a * $c; echo "<BR>";
echo "b % a = "; echo $b % $a; echo "<BR>";
echo "b % c = "; echo $b % $c; echo "<BR>";
echo "b + --a= "; echo $b + --$a; echo "<BR>";
echo "a / 0 = "; echo $a / 0; echo "<BR>";
?>
</BODY>
</HTML>
In PHP exista un singur operator pe siruri de caractere, restul operatiilor fiind efectuate prin
intermediul unor functii din biblioteca standard a limbajului. Acest operator este operatorul de
concatenare - punct '.'.
Operatorii de asignare permit atribuirea de valori varibilelor. Cel mai simplu operator este
operatorul '='. El are doi operanzi: o variabila in partea stanga si o expresie in partea dreapta.
Valoarea expresiei este evaluata apoi atribuita variabilei din partea stanga si, in final, returnata
de operator. Deoarece = nu este o intructiune PHP ci un operator, el poate intra in expresii
complexe de genul:
In plus fata de operatorul de asignare simplu, PHP pune la dispozitia programatorilor si operatori
de asignare combinati:
Varsiunea PHP 4 a introdus un nou operator si anume operatorul de referire '&'. El este un
operator unar, avand ca operand o variabila si permite legarea unui nume de variabila de zona
de memorie a varaibilei operand. Spre exemplu se considera secventa:
mircea.neamtu@ulbsibiu.ro.
$a = 3;
$b = $a; // a = 3, b = 3
$b = 5; // a = 3, b = 5
In urma acestei secvente vor exista doua variabile independente $a si $b. Modificarea ulterioara
a valorii lui $b nu afecteaza valoarea retinuta de $a. Daca, in schimb, consideram secventa:
$a = 3;
$b = &$a; // a = 3, b = 3
$b = 5; // a = 5, b = 5
Acestia sunt:
Daca operanzii nu sunt de acelasi tip se va incerca conversia operanzilor pentru a deveni
compatibili si apoi se va face comparatia. In cazul operatorului test de identitate '===' operanzii
nu sunt considerati egali daca nu au acelasi tip.
Acestia sunt:
Operatorul evalueaza mai intai expresia logica din conditie. Daca conditia este adevarata va
intoarce expresia valoare_adevarata iar in caz contrar valoare_falsa.
@(expresie)
Exemplu:
In cel de al doilea caz, valoarea lui $a va fi setata pe valoare vida ( convertita la 0 ca intreg).
El consta in doua apostroafe inverse '`'intre care este plasata comanda de executat. Exemplu
`ls -al`.
Operatorul de executie actioneaza doar daca optiunea safe_mode din php.ini este dezactivata
(Off). In general acest operator nu se foloseste datorita breselor de securitate pe care le
deschide pe server.
O definitie simpla a expresiilor PHP este urmatoarea: "expresie = orice are o valoare". Cea mai
mare parte a unui program PHP consta in expresii. Expresiile combina operanzi si operatori de
diverse tipuri: constante, variabile sau nume de functii.
mircea.neamtu@ulbsibiu.ro.
La evaluarea expresiilor operatorii se vor aplica intr-o ordine prestabilita, data de "precedenta"
lor. Tabelul urmator prezinta operatorii in ordinea inversa a precedenteiv lor (in fata sunt cei mai
putin prioritari).
O atentie deosebita trebuie acordata sirurilor de caractere intre ghilimele " ". La evaluarea
expresiei in care acestea apar, toate numele de variabile care apar in interiorul lor sunt inlocuite
cu valorile corespunzatoare. Exemplu:
$nume = "Vasile";
$sir1 = "Domnul $nume are masina rosie!";
$sir2 = 'Domnul $nume are masina rosie!';
echo $sir1; // afiseaza Domnul Vasile are masina rosie!
echo $sir2; // afiseaza Domnul $nume are masina rosie!
<HTML>
<HEAD>
<TITLE>Activitate 2.2.2.1.</TITLE>
</HEAD>
<BODY>
<H2>Operatori si expresii.</H1><P>
<?php
$nume = "Ionescu";
$prenume = "Vasile";
$varsta = 38;
$salar = 1500;
$prop1 = "Domnul $prenume $nume are $varsta ani."."<BR>";
echo $prop1;
$prop2 = "Domnul ".$nume." are salar ".(($salar<1000)?"mic":"mare")."!<BR>";
echo $prop2;
mircea.neamtu@ulbsibiu.ro.
$salarNou = &$salar; // salarNou indica spre salar
$procentMarire = 26; // procentul cu care se mareste salarul
$salarNou += $salarNou*($procentMarire / 100);
$prop3 = " Salarul sau dupa marire este de $salar $."; // salar si salar nou indica
spre aceiasi valoare
echo $prop3;
?>
</BODY>
</HTML>
B) Creati un formular HTML in care se citesc numele, prenumele, anul de studiu si nota luata la
un examen de un student. La apasarea butonului de Submit se va incarca o pagina PHP in care
se va afisa sub forma de fraze situatia elevului, transformand nota in calificativ: promovat /
nepromovat si apoi calculand bursa ca fiind 100000*nota daca nota este peste 7, respectiv
50000*(nota-1) daca este sub 7. Raspunsul la aceasta tema va consta in numele celor doua
fisiere si observatiile referitoare la problemele intampinate.
Instructiunea if permite luarea de decizii privind executia unei alte instructiuni sau a unui bloc
de instructiuni inclus intre acolade ('{' si '}').
if (expr)
instructiune
Expresia expr este o expresie (conditie) logica ce se evalueaza la true sau false. Daca evaluarea
conditiei are ca rezultat o valoare adevarata se va executa instructiunea specificata, daca nu,
instructiunea va fi ignorata si se va trece mai departe.
Exemplu:
if ($nota < 5)
echo 'Examenul trebuie repetat!';
mircea.neamtu@ulbsibiu.ro.
Daca expresia conditionala nu este una logica, se va face o conversie automata la o valoare
logica. Valorile numerice 0 sau 0.0, sirurile vide (""), tablourile fara nici un element sau
variabilele neinitializate vor fi evaluate la fals, restul fiind evaluate la true.
if ($nota < 5)
{
echo 'Examenul trebuie repetat!';
$bursa = 0;
}
In multe cazuri, pentru conditie neadevarata se doreste executia altei instructiuni sau a unu bloc
de instructiuni. In acest caz se va folosi clauza optionala else. Exemplu:
if ($nota < 5)
{
echo 'Examenul trebuie repetat!';
$bursa = 0;
}
else
{
echo 'Felicitari pentru trecerea examenului!';
$bursa = 1000000;
}
In unele situatii, la luarea unei decizii exista mai multe optiuni. In acest caz ar trebui testate mai
multe conditii. Pentru aceasta, limbajul PHP pune la dispozitia programatorilor clauza elseif. In
acest caz sintaxa instructiunii este:
if (expr1)
instructiune1
elseif (expr2)
instructiune2
...
elseif (expr3)
instructiune
Exemplu:
if ($nota < 5)
{
echo 'Insuficient';
$bursa = 0;
}
elseif ($nota<7)
{
echo 'Suficient';
$bursa = 500000;
}
elseif ($nota<9)
{
echo 'Bine';
$bursa = 1000000;
}
else
{
mircea.neamtu@ulbsibiu.ro.
echo 'Bine';
$bursa = 1500000;
}
Instructiunea switch este similara cu o serie de instructiuni if care testeaza mai multe valori
posibile pentru o anumita expresie. Avantajul sau este o scriere mai concisa si mai simplu de
inteles si depanat. Sintaxa acestei instructiuni este:
switch (expr) {
case valoare_1:
instructiune_1;
break;
case valoare_2:
instructiune_2;
break;
...
case valoare_n:
instructiune_n;
break;
defaut:
instructiune_default;
}
Dupa evaluarea expresiei, valoarea obtinuta este comparata cu valorile din clauzele case. Daca
se intalneste o potrivire se va continua cu executia instructiunilor din clauzele case urmatoare,
pana la intalnirea instructiunii break. Consecinta este ca, daca instructiunile dintr-o clauza case
nu se termina cu break, se va continua executia cu instructiunile clazei urmatoare. Acest lucru
se poate utiliza pentru a executa o secventa de instructiuni comuna pentru mai multe valori, ca
si in exemplu urmator:
switch ($nota) {
case 1: case 2: case 3: case 4:
echo ' nu are bursa!';
break;
case 5: case 6:
echo ' bursa este 500000.';
break;
case 7:
echo ' bursa este 700000.';
break;
case 8: case 9:
echo ' bursa este 1000000.';
break;
case 10:
echo ' bursa este 1500000.';
break;
defaut:
echo 'nota nu este corecta!';
}
mircea.neamtu@ulbsibiu.ro.
Cap 3.1.2.1. Instructiunea while
while (expr)
instructiune
Expresia expr este o expresie (conditie) logica ce se evalueaza inainte de fiecare repetitie. Daca
rezultatul evaluarii conditiei este adevarat, se va executa instructiunea specificata apoi secventa
se va relua. Daca rezultatul evaluarii este fals, instructiunea va fi ignorata si se va trece la
intructiunea de dupa while.
Exemplu:
$i = 1;
while ($i< 5)
echo 'Numarul '.$i++."<BR>";
<HTML>
<HEAD>
<TITLE>Activitate 3.1.2.1.</TITLE>
</HEAD>
<BODY>
<H2>Tabela de conversie dolari/lei.</H1><P>
<?php
$curs= 33000;
$n = 50;
echo "<TABLE border=1>";
while ($n<=5000)
{
Activitate 1 echo "<TR>"; // se creeaza o noua linie in tabel
echo "<TD>"; // se creeaza coloana pentru valoarea in lei
echo number_format($n)." $ </TD>"; // se completeaza valoarea in lei
echo "<TD>"; // se creeaza coloana pentru valoarea in dolari
echo number_format($n*$curs)." lei </TD> </TR>"; // se completeaza
valoarea in dolari
$n+=50; // se vor tabela valorile din 50 in 50 de dolari
}
echo "</TABLE>";
?>
</BODY>
</HTML>
Expresia expr este o expresie (conditie) logica ce se evalueaza dupa fiecare repetitie. Daca,
dupa executarea instructiunii conditia este adevarata se va relua secventa de la inceput. In
cazul in care conditia devine falsa, repetitia se va incheia si se va trece la intructiunea de dupa
do-while.
Exemplu:
In cazul buclei do-while, instructiunea din bucla se va executa cel putin o data chiar si in cazul in
care conditia nu este adevarata de la inceput.
Instructiunea for este inspirata din limbajul C. Ca si while, ea permite executia unei instructiuni
sau a unui bloc de instructiuni inclus intre acolade ('{' si '}') si are sintaxa:
Prima expresie (expr1) este numita expresie de initializare si se executa o singura data,
neconditionat, la inceputul ciclului. De obicei aceasta expresie contine atribuiri. Expr2 este o
conditie logica ce se evalueaza la inceputul fiecarei iteratii. Pentru conditie adevarata se va
executa instructiunea din bucla, daca este falsa, repetitia se va incheia si se va trece la
intructiunea de dupa for. Expr3 se numeste expresie de iterare si se evalueaza la sfarsitul
fiecarei repetari. Ea are rolul de a asigura trecerea la pasul urmator (incrementarea contoarelor,
citirea datelor urmatoare etc.).
Oricare dintre cele trei expresii pot fi vide. Daca expr3 este vida PHP o va considera adevarata
si va cicla la infinit. In acest caz trebuie asigurata o iesire fortata din bucla utilizand una dintre
instructiunile de control pentru repetitii (vezi capitolul 3.1.3).
mircea.neamtu@ulbsibiu.ro.
Cap 3.1.2.4. Tablouri PHP. Instructiunea foreach
Un tablou este un tip de date ce poate retine un set de valori. In PHP tabloul va asocia fiecarei
intrari o cheie prin care aceasta poate fi regasita. Cheile pot fi numerice (in acest caz indicii
creati implicit vor fi 0,1,2 ...) sau pot fi siruri de caractere (caz in care tabloul se numeste
asociativ). Valorile retinute pot avea orice tip dar sunt de acelasi fel pentru un tablou dat.
Exemplu:
Accesul la elementele tabloului se face prin indecsi numerici (cu semnificatia de numere de
ordine in tablou). Spre exemplu $culori[0] are valoarea "alb", $culori[4] are valoarea "galben"
etc.
In PHP dimensiunea unui tablou este variabila. Pentru a adauga un nou element se va atribui
pur si simplu variabilei cu urmatorul indice o anumita valoare. Spre exemplu $culori[5]="negru"
va adauga un nou element ("negru") la sfarsitul tabloului $culori.
Numarul curent de elemente ale unui tablou se poate afla in orice moment cu ajutorul functiei
count($tablou).
Tablourile asociative sunt tablouri in care valorilor continute le sunt asociate chei prin care
acestea pot fi regasite. Sintaxa pentru crearea unui astfel de tablou este:
$tablou = array( "cheie1" => el1, "cheie2" => el2, ... "cheie_n" => el_n);
Exemplu:
$pret = array ("paine alba" => 7000, "ou" => 3000, "zahar" => 24000);
Accesul la un element se face prin cheia asociata. Spre exemplu $pret["paine alba"] are
valoarea 7000. Si in acest caz tabloul poate si extins dinamic prin adaugarea unui nou element a
carei cheie nu exista in tablou. Spre exemplu $pret["miere 500g"] = 30000 va adauga
elementul 30000 cu cheia "miere 500g" la tabloul $pret, acesta avand acum patru elemente.
Ambele tipuri de tablouri retin intern o referinta (pointer) catre elementul curent de prelucrat.
Acest lucru permite scrierea secventelor pentru parcurgerea si prelucrarea elementelor lor.
Instructiunea foreach este asemanatoare cu instructiunea for dar este destinata exclusiv
parcurgerii de tablouri, in special a celor asociative. Sintaxa acestei instructiuni are doua forme
alternative:
Prima forma permite extragerea tuturor valorilor din tablou si prelucrarea lor individual, pe cand
cea de a doua forma permite si extargerea si prelucrarea cheilor asociate.
mircea.neamtu@ulbsibiu.ro.
Creati fisierul a3124.php pentru a genera o tabela de conversie valutara.
<HTML>
<HEAD>
<TITLE>Activitate 3.1.2.4.</TITLE>
</HEAD>
<BODY>
<H2>Parcurgerea tablourilor.</H1>
<P>
<?php
$culori= array ("alb", "albastru", "verde", "rosu", "galben");
$pret = array ("paine alba" => 7000, "ou" => 3000, "zahar" => 24000);
echo "<P>Tablou indexat numeric, extragere valori.<BR>";
echo "<UL>";
foreach ($culori as $culoare)
echo "<LI>".$culoare."</LI>";
echo "</UL>";
echo "<P>Tablou indexat numeric, extragere valori si indecsi.<BR>";
echo "<TABLE border=1>";
foreach ($culori as $indice => $culoare)
{
echo "<TR>"; // se creaza o noua linie in tabel
echo "<TD>"; // se creaza coloana pentru valoarea indexului
echo $indice; // se completeaza valoarea indexului
echo "</TD> <TD>"; // se creaza coloana pentru culori
echo $culoare; // se completeaza culoarea
echo "</TD> </TR>"; // se inchide linia curenta
Activitate 2
}
echo "</TABLE>";
echo "<HR>";
echo "<P>Tablou asociativ, extragere valori.<BR>";
echo "<UL>";
foreach ($pret as $pret_produs)
echo "<LI>".$pret_produs."</LI>";
echo "</UL>";
echo "<P>Tablou asociativ, extragere valori si chei.<BR>";
echo "<TABLE border=1>";
foreach ($pret as $produs => $pret_produs)
{
echo "<TR>"; // se creaza o noua linie in tabel
echo "<TD>"; // se creaza coloana pentru valoarea cheii (produsul)
echo $produs; // se completeaza valoarea cheii
echo "</TD> <TD>"; // se creaza coloana pentru pret
echo $pret_produs; // se completeaza pretul
echo "</TD> </TR>"; // se inchide linia curenta
}
echo "</TABLE>";
?>
</HR>
</BODY>
</HTML>
echo "<UL>";
for ($i = 0; $i < count($culori); $i++)
mircea.neamtu@ulbsibiu.ro.
echo "<LI>".$culori[$i]."</LI>";
echo "</UL>";
In multe situatii, pentru simplificarea implementarii este necesar sa se iasa fortat dintr-o
iteratie. In acest scop limbajul PHP include trei instructiuni speciale: continue, break si return.
Instructiunea return permite terminarea fortata a functiei sau programului curent. Ea poate fi
folosita in instructiunile for, foreach, while sau do..while unde, prin terminarea scriptului,
termina in mod evident si bucla curenta. Daca se doreste generarea unui mesaj in pagina
inainte de incheierea scriptului, in loc de return se pot folosi functiile exit(mesaj) sau die(mesaj)
- die fiind un alias al functiei exit. Exemplu - in exemplul anterior, la generarea lui 0 se termina
fortat pagina:
mircea.neamtu@ulbsibiu.ro.