Php
Structuri de control in PHPStructuri de control in PHP Instructiunile compuse sunt formate din mai multe instructiuni simple, separate prin caracterul ';'. In PHP, instructiunile compuse au urmatoarea sintaxa: Instructiunile care formeaza instructiunea compusa pot fi de orice tip: orice structura de control, alte instructiuni compuse etc. Asadar un bloc de instructiuni (o instructiune compusa), in PHP, este delimitat de acolade. A. Structura if Sintaxa: if (conditie) Una dintre cele mai importante structuri in orice limbaj este cea alternativa. Folosirea unei astfel de structuri indica faptul ca instructiunea se va executa daca si numai daca valoarea expresiei conditie (eventual dupa conversia la tipul boolean) este true. B. Constructia if - else Sintaxa este: if (conditie) else In constructia de tipul if - else daca valoarea expresiei conditie este „false” se executa instructiunea „instructiune #2”. C. Constructia elseif In PHP se pot folosi structuri alternative imbricate in diferite scopuri. Sintaxa: if (conditie #1) instructiune #1 elseif (conditie #2) instructiune #2 else elseif (conditie #n) instructiune #n else instructiune #n+1 Limbajul PHP permite folosirea unei prescurtari si anume constructia elseif. Practic, aceasta inlocuieste un else urmat de un if. Folosind aceasta structura, codul anterior poate fi scris astfel: if (conditie #1) instructiune #1 elseif (conditie #2) instructiune #2 elseif elseif (conditie #n) instruciune #n else instructiune #n+1 Pentru a executa mai multe instructiuni cand este indeplinita o anumita conditie, atunci ar trebui sa folosim instructiunile compuse. Sintaxe alternative: if (conditie): instructiune #1 instructiune #2 instructiune #n endif Practic, pentru orice structura de control PHP, putem inlocui acolada deschisa prin caracterul ':' si acolada inchisa printr-un cuvant cheie obtinut prin adaugarea prefixului end la cuvantul cheie care indica structura de control. Trebuie observat faptul ca else si elseif nu sunt structuri, ele fiind simple constructii folosite in cadrul structurii if. Din acest motiv, nu se poate scrie niciodata endelse sau endelseif, ci doar endif-uri. Asadar, sintaxa alternativa pentru o structura if in care se folosesc constructii else si elseif este urmatoarea: if (conditie #1) grup instructiuni #1
elseif (conditie #2) grup instructiuni #2 elseif elseif (conditie #n) grup instructiuni #n else grup instructiuni #n+1 endif; D. Structura while Majoritatea script-urilor PHP vor contine cicluri. Pentru a folosi o bucla anterior conditionata vom utiliza structura while. Sintaxa este: while (conditie) Efectul acestei structuri este executarea instructiunii atat timp cat valoarea expresiei conditie (eventual dupa conversia la tipul boolean) este true. Trebuie observat faptul ca este posibil ca instructiunea sa nu fie executata niciodata. Si pentru aceasta structura avem la dispozitie o sintaxa alternativa si anume: while (conditie): grup instructiuni endwhile; E. Structura do – while Uneori, dorim sa folosim bucle posterior conditionate. In PHP putem folosi bucle posterior conditionate cu ajutorul structurii do - while a carei sintaxa este: do while (conditie); Singura diferenta fata de structura while este faptul ca valoarea conditiei este determinata, de fiecare data, dupa executarea instructiuniilor. Ca urmare, instructiunile vor fi executate cel putin o data. Nu exista o sintaxa alternativa pentru aceasta structura. F. Structura for O alternativa cu o functionalitate mai ridicata pentru utilizarea buclelor este structura repetitiva for: Sintaxa: for (expresie #1; expresie #2; expresie #3) instructiune Prima expresie este evaluata o singura data, inainte de inceperea executiei ciclului. Instructiunea este executata cat timp cea de-a doua expresie are valoarea true. De fiecare data, dupa executarea instructiunii, este evaluata cea de-a treia expresie. Oricare dintre cele trei expresii poate lipsi; in cazul in care o expresie lipseste, se considera ca ea are valoarea true. Sintaxa alternativa: for (expresie #1; expresie #2; expresie #3): instructiune endfor; G. Structura foreach Aceasta structura poate fi folosita pentru a realiza o iteratie printre toate elementele unui vector. Asadar, ea nu poate fi folosita decat impreuna cu vectorii; utilizarea sa asupra unei variabile de alt tip duce la aparitia de erori. Sintaxa 1 : foreach (expresie_vectoriala as $valoare) instructiune sau Sintaxa 2: foreach (expresie_vectoriala as $cheie => $valoare) instructiune Daca se utilizeaza prima varianta, atunci la fiecare iteratie valoarea elementului curent este atribuita variabilei $valoare si apoi se trece la elementul urmator (a carui valoare va fi atribuita variabilei la urmatoarea iteratie). Executia ciclului se incheie in momentul in care nu mai exista alte elemente in vector. Singura diferenta care apare in cazul utilizarii celei de-a doua variante este faptul ca la fiecare iteratie valoarea cheii elementului curent este atribuita variabilei $cheie. H. Structura switch In anumite cazuri trebuie sa efectuam anumite operatii in functie de anumite valori ale unei expresii. O solutie ar fi folosirea unor structuri if imbricate sau a uneia singure in care apar mai multe constructii elseif. Sa presupunem ca o anumita variabila poate avea cinci valori distincte si pentru fiecare valoare trebuie executata o anumita instructiune. Daca folosim structura if, secventa de cod va fi urmatoarea: if ($variabila == valoare #1) instructiune #1 elseif ($variabila == valoare #2) instructiune #2 elseif ($variabila == valoare #3) instructiune #3 elseif ($variabila == valoare #4) instructiune #4 else instructiune #5 Folosind structura switch, secventa echivalenta este: swich ($variabila) Sintaxa generala a structurii switch: switch (expresie) Pentru inceput se determina valoarea expresiei si apoi se verifica daca aceasta apare ca valoare pentru una dintre constructiile case. In caz afirmativ, toate instructiunile incepand cu cea corespunzatoare valorii respective (pana la sfarsitul blocului swich) vor fi executate. Executia acestor instructiuni poate fi intrerupta daca este folosita instructiunea break, care va fi prezentata mai jos. Daca valoarea expresiei nu corespunde nici uneia dintre valorile corespunzatoare constructiilor case, se executa instructiunile corespunzatoare constructiei default. Daca aceasta lipseste, atunci nu se executa nici o instructiune. Trebuie precizat faptul ca valorile corespunzatoare constructiilor case pot fi numere intregi, numere reale sau siruri de caractere; nu pot fi utilizate obiecte sau vectori. I. Instructiunea break Aceasta instructiune poate fi folosita pentru a intrerupe fortat executia unui ciclu sau a secventei de instructiuni corespunzatoare unei structuri switch. Instructiunea poate fi urmata de un argument care indica numarul de structuri imbricate a caror executie se incheie. Valoarea implicita este 1, deci se intrerupe executia unei singure structuri. Urmatoarea secventa de cod PHP realizeaza parcurgerea elementelor unui vector de numere intregi pana in momentul in care se intalneste un numar negativ. Instructiunea break poate fi utilizata pentru intreruperea executiei secventelor de instructiuni corespunzatoare structurilor for, foreach, while, do - while si switch. J. Instructiunea continue Aceasta instructiune este folosita pentru a intrerupe executia secventei de instructiuni din interiorul unui ciclu si trecerea la urmatoarea iteratie. In cazul instructiunii for, inainte de urmatoarea iteratie se evalueaza (executa) expresia de incrementare (expresia #3 din sintaxa generala). La fel ca si in cazul instructiunii break, poate aparea un argument care indica numarul structurilor imbricate asupra carora are efect. K. Alte structuri PHP Structurile include, require, include_once si require_once pot fi utilizate pentru a 'insera' anumite instructiuni care sunt pastrate intr-un alt fisier (document). Interpretorul PHP considera ca secvensa din fisierul inserat se afla in fisierul din care s-a 'comandat' inserarea in pozitia in care apare structura de inserare. O alta structura este declare care permite crearea unor directive in executie. Functiile PHP trebuie sa utilizeze instructiunea return pentru a furniza un rezultat.
|