curs programare web
Structuri de control Aceste structuri permit definirea unei condiţii şi apoi executarea unor operaţii funcţie de răspuns. Vom discuta despre: if else elseif switch
while for foreach include
require break continue return
if este instrucţiunea condiţională cea mai folosită având următoarea sintaxă: if (condiţie) { instrucţiuni executate dacă este îndeplinită condiţia ; } Condiţia este încadrată de paranteze rotunde iar instrucţiunea care se execută în cazul în care condiţia este îndeplinită între acolade. Neîndeplinirea condiţiei face să se execute ce urmează după închiderea acoladei. Exemplu: se compară două variabile şi se afisează un mesaj <?php $a=4; $b=3; echo "$a=4<br>"; echo "$b=3<br>"; if ($a>$b) { echo "$a>$b"; } ?> else este altă instrucţiune condiţională care indică ce se execută în cazul în care condiţia menţionată în instrucţiunea if nu este îndeplinită şi are sintaxa: if (condiţie) { instrucţiuni executate dacă este îndeplinită condiţia; } else { instrucţiuni executate dacă nu este îndeplinită condiţia; } Exemplu: se compară două variabile şi se afisează un mesaj <?php $a=2; $b=9; echo "$a=2<br>"; echo "$b=9<br>"; if ($a>$b) { echo "$a>$b"; } else { echo "$a<$b"; } ?> elseif este o combinaţie între if şi else. În cazul în care condiţia if nu este îndeplinită se introduce elseif care testează încă o condiţie. Dacă nu este îndeplinită a doua condiţie se execută declaraţia introdusă prin else.
curs programare web if (condiţia1) { instrucţiuni executate dacă este îndeplinită condiţia 1; } elseif (condiţia2) { instrucţiuni executate dacă este îndeplinită condiţia 2; } else { instrucţiuni executate dacă nu este îndeplinită condiţia 2; } Exemple: <?php $a=19; $b=23; if ($a<$b) { echo "$a<$b"; } elseif ($a==$b) { echo "$a==$b"; } else { echo "$a>$b"; } ?> if ($number % 3 == 0) echo "Numarul este divizibil cu 3"; elseif ($number % 3 == 1) echo "Numarul nu este divizibil cu 3, restul impartirii este 1"; else echo "Numarul nu este divizibil cu 3, restul impartirii este 2"; switch este asemănătoare funcţiei if dar condiţia are mai mult de două valori. Exemple: transformă numărul zilei în numele ei <?php $ziua=2; echo $ziua; echo "<br>"; switch ($ziua) { case 1: echo "Luni"; break; case 2: echo "Marti"; break; case 3: echo "Miercuri"; break; case 4: echo "Joi"; break; case 5: echo "Vineri"; break; case 6: echo "Sambata"; break; case 7: echo "Duminica"; break; } ?>
curs programare web
$number = 27; switch ($number % 3) { case 0: echo "Numarul este divizibil cu 3"; break; case 1: echo "Numarul nu este divizibil cu 3, restul impartirii este 1"; break; case 2: echo "Numarul nu este divizibil cu 3, restul impartirii este 2"; break; } while este o instrucţiune de tip buclă. Atâta timp cât condiţia este adevărată se repetă bucla. Exemplu: <?php $numar=1; while ($numar<=7) { echo $numar."<br>"; $numar++; } ?> do - while Uneori, dorim să folosim bucle posterior condiţionate. În acest scop, în PHP avem la dispoziţie structura do - while a cărei sintaxa este: do instructiune while (condiţie); Singura diferenţă faţă de structura while este faptul că valoarea condiţiei este determinată, de fiecare dată, după executarea instrucţiunii. Ca urmare, instrucţiunea va fi executată cel putin o dată. Nu există o sintaxă alternativă pentru această structură.
for este o instrucţiune de tip buclă. for (expresia1; expresia2; expresia3) { instrucţiuni de executat; }
expresia1 este evaluată la începutul buclei expresia2 se verifică la începutul fiecărei iteraţii expresia3 se execută la sfârşitul fiecărei iteraţii construcţia for poate funcţiona şi fără una sau toate aceste expresii Exemplu: se iniţializează variabila i cu valoarea 1, se verifică dacă este mai mică sau egala cu 10 iar apoi se incrementează. La fiecare iteraţie se tipăreşte variabila i. <?php for ($i=1; $i<=10; $i++) { echo $i."<br>";
curs programare web } ?> foreach este o construcţie care funcţionează doar cu matrice generând erori când sunt folosite variabile cu tipuri de date diferite sau variabile neiniţializate. Sintaxa folosită este: foreach ($matrice as $cheie=>$valoare) { instrucţiuni de executat; } Exemple: <?php $personal = array( "Florin" => director, "Catalin" => inginer, "Mihai" => economist, "Sorin" => sofer, "Diana" => secretara ); foreach ($personal as $nume => $meserie) { echo "$nume => $meserie<br>"; } ?> $array = array(1,4,2,8,6,3,9,0); $searchNo = 8; foreach ($array as $element) { if ($searchNo == $element) { echo "Numarul cautat a fost gasit"; break; } } include şi require sunt două funcţii asemănătoare folosite pentru includerea în paginile php a unor fişiere externe. Difereţa între cele două funcţii constă în faptul că dacă include dă greş scriptul generează o avertizare dar funcţionează în continuare în timp ce la require se termină executarea scriptului. include "fisier1.php"; require "fisier2.html"; break opreşte forţat executia structurilor for, foreach, while, do..while sau switch. break acceptă opţional un argument numeric care indică numărul de structuri imbricate a caror funcţionare este oprită. Exemplu: la i=6 se opreşte execuţia buclei <?php for ($i=0; ;$i++) { if ($i>6) { break; } echo $i."<br>"; } ?> continue sare peste restul din iteraţia buclei curente şi continuă execuţia la începutul iteraţiei următoare.
curs programare web continue acceptă opţional un argument numeric care indică numărul de bucle care vor fi sărite până la sfârşit.Exemplu: sare execuţia peste i==5 <?php for ($i=0;$i<8;$i++) { if ($i==5) continue; echo $i."<br>";} ?> return Dacă este chemată din interiorul unei funcţii declaraţia return() opreşte imediat execuţia funcţiei curente şi furnizează argumentul ca valoare a funcţiei. Dacă este chemată în scop global execuţia scriptului curent se opreşte.
Alte exemple: În continuare aveţi un exmplu care afişează numerele cuprinse între 1 şi 15. Numerele pare vor fi scrise cu roşu, iar cele impare care sunt divizibile cu 3 cu verde, iar celelalte cu albastru. Vom folosi o structură repetitivă pentru a afişa numerele şi o structură alternativă pentru a determina culoarea cu care vor fi afişate. Putem utiliza oricare dintre cele trei structuri repetitive; cele trei variante sunt prezentate în tabelul de mai jos. Exemplu <?php # Structuri alternative si repetitive # Bucla for # Exemplu for ($i = 1; $i <= 15; $i++): echo "<b><font size = 3 "; echo "color = "; if ( ! ($i % 2)) echo "red"; elseif ( ! ($i % 3)) echo "green"; else echo "blue"; echo "> $i </font></b>"; endfor; ?> <?php # Structuri alternative si repetitive # Bucla while # Exemplu $i = 1; while ($i<=15) { echo "<b><font size = 3 "; echo "color = "; if ( ! ($i % 2)) echo "red"; elseif ( ! ($i % 3)) echo "green"; else echo "blue"; echo "> $i </font></b>"; $i++; } ?> <?php # Structuri alternative si repetitive # Bucla do - while # Exemplu $i = 1;
Rezultat
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
curs programare web do { echo "<b><font size = 3 "; echo "color = "; if ( ! ($i % 2)) echo "red"; elseif ( ! ($i % 3)) echo "green"; else echo "blue"; echo "> $i </font></b>"; $i++;} while ($i <= 15);?> Exemplu foreach: Exemplu <?php // structura foreach echo "<TABLE width = 100%><TR><TD with = 50%>"; // un vector obisnuit $a = array (1, 2, 3, 10); echo "<b>Parcurgerea unui vector:</b><br><ol>"; foreach ($a as $v) echo "<li><i>Valoarea curenta este </i>:<tt>$v</tt>\n<br>"; /* parcurgerea vectorului, contorizarea elementelor si afisarea numarului de ordine al elementului curent */ $i = 0; echo "</ol><b>O alta parcurgere: </b><ul>"; foreach ($a as $v) { echo "<li><tt>\$a[$i] => $v</tt>\n <br>"; $i++; } /* un vector ale carui elemente sunt identificate prin chei */ $a = array ( "unu" => 1, "doi" => 2, "trei" => 3, "zece" => 10 ); echo "</ul><td><width = 50%><b>Parcurgere cu afisarea cheilor: </b><ul>"; foreach ($a as $k => $v) { echo "<li><tt>\$a[$k] => $v</tt>\n"; } // o matrice $b[0][0] = "a"; $b[0][1] = "b"; $b[1][0] = "c"; $b[1][1] = "d"; echo "</ul><b>Parcurgerea unei matrice:</b><br><tt>"; foreach ($b as $v1) { echo "&nbsp;&nbsp;"; foreach ($v1 as $v2) echo "$v2\n"; echo "<br>"; } echo "</tt><br><b>Parcurgerea unui vector generat dinamic: </b><br><tt>&nbsp;&nbsp;"; // un vector generat dinamic
Rezultat Parcurgerea unui vector:
1. Valoarea 2. 3. 4.
Parcurgere cu afisarea curenta este cheilor: :1 Valoarea • $a[unu] => 1 curenta este • $a[doi] => 2 :2 • $a[trei] => 3 Valoarea • $a[zece] => 10 curenta este :3 Parcurgerea unei Valoarea curenta este matrice: a b :10 c d
O alta parcurgere: Parcurgerea unui vector generat dinamic: • $a[0] => 1 1 2 3 4 5 • $a[1] => 2 •
$a[2] => 3
•
$a[3] => 10
curs programare web foreach (array (1, 2, 3, 4, 5) as $v) echo "$v\n"; echo "</tt></td></tr></table>"; ?> Exemple switch: <?php switch($beer) { case 'tuborg'; case 'carlsberg'; case 'heineken'; echo 'Good choice'; break; default; echo 'Please make a new selection...'; break; } ?> Afişare valori din tablou <?php $v = array("one", "two", "three"); foreach ($v as $value) { echo $value."<br />\n"; } ?> Afişare chei şi valori din tablou <?php $v = array("one", "two", "three"); foreach ($v as $key => $value) { echo "la cheia: $key corespunde valoarea: $value<br />\n"; } ?> <?php $varsta["Ion"] = "28"; $varsta["Maria"] = "16"; $varsta["Sisu"] = "35"; $varsta["Puya"] = "46"; $varsta["Marin"] = "34"; foreach( $varsta as $key => $value){ echo "Nume: $key, varsta: $value <br />"; } ?>
TEMĂ 1. Creaţi un script PHP în care folosind structura decizională să salutaţi pe cineva cu doamna sau domnule. Veţi folosi o variabilă de tip string care să înceapă cu dna sau dl urmat de numele persoanei.
2. Creaţi un script PHP care folosind structura switch să aleagă din mai multe destinaţii de vacanţă (cel puţin 5) şi în funcţie de destinaţia aleasă să afişeze o imagine a destinaţiei însoţită de un text utilizând tag-uri HTML sau stiluri CSS.
3. Creaţi un script PHP care să afişeze un tabel(în HTML) de produse vândute pe timp de jumătate de an cu antetul următor: numele şi preţul lor actual, preţul+TVA, luna. Se va folosi for.
curs programare web 4. Creaţi un script PHP care să afişeze un tabel(în HTML)
de produse cu antetul următor: numele şi preţul lor actual, preţul+TVA, luna. Să se crească lunar TVA-ul până când preţul se dublează la unul dintre produse. Se va folosi while.
5. Creaţi un script PHP în care să existe o variabilă de tip tablou având cheie numele unor persoane şi valoare un alt tablou cu descrierea persoanelor(adult/copil, varsta, job/scoala). Să se creeze un tabel cu adulţii între 30-50 de ani şi alt tabel cu copiii.