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:
 
Structuri de control in php
Colt dreapta
Vizite: ? Nota: ? Ce reprezinta? Intrebari si raspunsuri
 
s8m2mv
Toate scripturile PHP sunt o suita de instructiuni. O instructiune poate fi o atribuire, un apel de functie, o instructiune conditionala sau chiar o instructiune vida. O instructiune se termina de obicei prin punct si virgula, ';'. Instructiunile pot fi grupate in blocuri delimitate de acolade, 'AS'. Un bloc este considerat ca o instructiune. Diferitele tipuri de instructiuni sunt descrise in capitolul urmator.

if
Instructiunea if este importanta in toate limbajele, inclusiv in PHP. Ea permite executia conditionata a unei parti de cod. Sintaxa instructiunii if este aceeasi ca si in C:

if( expresie)
A lista de instructiuni
SCum am vazut in paragraful care se refera la expresii, expresie este evaluata la o valoare de adevar. Daca expresia expresie este TRUE, PHP va executa instructiunile din lista de instructiuni, iar daca ea este FALSE, instructiunile vor fi ignorate.

Exemplu:

if( $a > $b) echo "$a este mai mare decat $b";Daca dorim ca un grup de instructiuni sa fie executate conditionat, este suficient sa inchidem aceste instructiuni intre acolade pentru a forma un bloc.

Exemplu:

if( $a > $b)
A echo "$a este mai mare decat $b";
$b = $a;
SInstructiunile if pot fi imbricate pe oricate niveluri dorim obtinandu-se o structura conditionala extrem de flexibila.

else
Daca dorim sa executam doua instructiuni diferite in functie de valoarea de adevar a unei expresii vom folosi o instructiune if-else ca in exemplul urmator:

if( $a > $b)
A print "$a este mai mare decat $b";
S else
A print "$b este mai mare decat $a";
SInstructiunile de dupa else sunt executate doar daca expresia conditionala este evaluata la FALSE.

elseif
Asa cum sugereaza numele, este o combinatie a instructiunilor if si else. Ca si else, instructiunea elseif extinde o instructiune if pentru a executa alte instructiuni in cazul in care expresia conditionala din if este FALSE. Spre deosebire de else, instructiunea alternativa va fi executata doar daca expresia conditionala din elseif este TRUE.




Spre exemplu, fragmentul urmator de cod va afisa care este relatia dintre $a si $b.

if( $a > $b)
A print "$a este mai mare decat $b";
S elseif( $a == $b)
A print "$a este egal cu $b";
S else
A print "$b este mai mare decat $b";
SInstructiunile elseif se pot imbrica pe mai multe niveluri, dupa un if initial. Primul elseif care va fi evaluat la TRUE va fi executat. In PHP, instructiunea poate fi scrisa si in doua cuvinte: else if. Comportamentul sau va fi acelasi.

Sintaxa alternativa
PHP propune o sintaxa alternativa pentru instructiunile de control if, while, for si switch. In fiecare caz principiul este de a inlocui acolada deschisa cu doua puncte (':') si acolada inchisa prin, respectiv endif;, endwhile;, endfor;, sau endswitch;.

if( $a == 5): echo $a; endif;Aceasta sintaxa functioneaza de asemenea cu else si elseif. Exemplul urmator prezinta o structura cu un if, un elseif si un else utilizat in aceasta noua sintaxa.

if( $a == 5): print "$a este egal cu 5"; print "..."; elseif( $a == 6): print "$a este egal cu 6"; print "!!!"; else: print "$a este diferit de 5 si 6"; endif;while
Bucla while este cea mai simpla implementare a unei bucle in PHP. Aceasta bucla se comporta la fel ca in C. Sintaxa instructiunii while este:

while( expresie)
A lista de instructiuni
SExecutia unei bucle while este foarte simpla. PHP executa instructiunile din lista de instructiuni atat timp cat expresia buclei while, expresie, este evaluata la TRUE. Valoarea expresiei este verificata la fiecare inceput al buclei si, daca valoarea se schimba pe durata executiei instructiunilor, executia nu se va sfarsi decat la urmatoarea iteratie (de fiecare data cand PHP executa instructiunile are loc o iteratie). Daca expresia buclei while este FALSE inaintea primei interatii, instructiunea nu va fi niciodata executata.

Mai multe instructiuni pot fi executate intr-o bucla while grupandu-le intre acolade pentru a forma un bloc sau utilizand sintaxa alternativa dupa modelul de mai jos:

while( expresie): lista de instructiuni endwhile;Urmatoarele exemple sunt identice ca efect si afiseaza toate numerele de la 1 la 10:

/* Exemplul 1 */
$i = 1;
while( $i <= 10)
A print $i++; /* Afiseaza valoarea lui $i inaintea incrementarii */
S

/* Exemplul 2 */
$i = 1;
while( $i <= 10): print $i;
$i++; endwhile;do..while
Buclele do..while seamana mult cu buclele while, dar expresia conditionala este testata la sfarsitul fiecarei iteratii si nu la inceput. Principala diferenta fata de bucla while este ca prima iteratie a buclei do..while este intotdeauna executata (expresia nu este testata decat la sfarsitul iteratiei). Nu exista decat o sintaxa posibila pentru buclele do..while:

do
A lista de instructiuni
Swhile( expresie);Exemplu:

$i = 0; do
A print $i;
Swhile( $i > 0);Bucla de mai sus va fi executata doar o singura data, pentru ca la prima evaluare a expresiei obtinem FALSE (deoarece variabila $i nu este mai mare decat 0) si executia buclei se opreste.

Utilizatorii familiari cu C sunt obisnuiti sa utilizeze in mod diferit buclele do..while, care permite oprirea executiei buclei, prin introducerea instructiunii break intr-o bucla do..while. Codul urmator demonstreaza acest lucru:

do
A if( $i < 5)
A print "$i nu este suficient de mare"; break;
S
$i *= $factor; if( $i < $minimum_limit)
A break;
S print "$i este bun";
Swhile( 0);for
Buclele for sunt cele mai complexe bucle in PHP. Ele functioneaza la fel ca buclele for din limbajul C.

Instructiunea are urmatoarea sintaxa:

for( expr1; expr2; expr3)
A lista de instructiuni
SPrima expresie (expr1) este evaluata (executata) o singura data, neconditionat, la inceputul buclei.

La inceputul fiecarei iteratii, expresia expr2 este evaluata. Daca evaluarea devine TRUE, bucla continua si instructiunile din lista de intructiuni sunt executate. Daca evaluarea devine FALSE, executia buclei se opreste.

La sfarsitul fiecarei iteratii, expresia expr3 este evaluata (executata).

Expresiile pot fi eventual vide. Daca expresia expr2 este vida, inseamna ca bucla este infinita (PHP considera implicit ca expresia expr2 este TRUE, ca in C). Acest lucru poate fi util, mai ales cand dorim sa terminam bucla cu instructiunea break.

In exemplele urmatoare vor fi afisate numerele de la 1 la 10:

/* Exemplul 1 */ for( $i = 1; $i <= 10; $i++)
A print $i;
S

/* Exemplul 2 */ for( $i = 1;; $i++)
A if( $i > 10)
A break;
S print $i;
S

/* Exemplul 3 */
$i = 1; for( ;;)
A if( $i > 10)
A break;
S print $i;
$i++;
S

/* Exemplul 3 */ for( $i = 1; $i <= 10; print $i, $i++) ;Evident, primul exemplu (sau al patrulea) este cel mai simplu dintre toate, dar utilizarea unei expresii vide intr-o bucla for poate fi utila de multe ori.

De asemeni, PHP foloseste urmatoarea sintaxa alternativa pentru buclele for:

for( expr1; expr2; expr3): lista de instructiuni endfor;foreach
PHP4 (nu si PHP3) dispune de comanda foreach, ca Perl sau alte limbaje. Instructiunea ofera un mod simplu de a trece in revista un tablou. Exista doua sintaxe posibile, a doua este o mica, dar utila, extensie a celei dintai :

foreach( array_expresion as $value)
A lista de instructiuni
S foreach( array_expresion as $key => $value)

A lista de instructiuni
SPrima forma trece in revista tabloul array_expression. La fiecare iteratie, valoarea elementului curent este atribuita lui $value si pointerul intern al tabloului este avansat cu un element (astfel, la urmatoarea iteratie aveti acces la urmatorul element).

A doua forma face acelasi lucru, dar cheia (indicele) elementului curent va fi atribuita variabilei $key la ficare iteratie.

Nota: cand foreach incepe sa fie executat, pointerul intern al fisierului este automat repozitionat la primul element al tabloului. Acest lucru inseamna ca nu veti avea nevoie sa faceti apel la reset() inainte de foreach. De asemeni, foreach lucreaza cu o copie a tabloului astfel incat pointer-ul intern al tabloului nu este modificat ca in cazul utilizarii constructorului each.

Urmatoarele doua exemple functioneaza in acelasi mod:

reset( $arr);
while( list( , $value) = each( $arr))
A echo "Valoare: $value<br>\n";
S

foreach( $arr as $value)
A echo "Valoare: $value<br>\n";
SExemplele urmatoare functioneaza, de asemeni, identic:

reset( $arr);
while( list( $key, $value) = each( $arr))
A echo "Cheie: $key; Valoare: $value<br>\n";
S

foreach( $arr as $key => $value)
A echo "Cheie: $key; Valoare: $value<br>\n";
SUrmeaza 3 exemple de utilizare (exemplul 2.7.1):

/* Exemplul 1: o singura valoare */
$a = array( 1, 2 3, 17); foreach( $a as $v)
A print "Valoarea curenta este \$a: $v.\n";
S

/* Exemplul 2: valoare (cu cheie asociata) */
$a = array( 1, 2 3, 17);
$i = 0; /* Numai pentru afisare */ foreach( $a as $v)
A print "\$aa$ii => $k.\n";
S

/* Exemplul 3: valoarea si cheia */
$a = array(
"unu" => 1,
"doi" => 2,
"trei" => 3,
"saptesprezece" => 17
); foreach( $a as $k => $v)
A print "\$aa$ki => $v.\n";
Sbreak
Instructiunea break permite iesirea dintr-o instructiune if, for, while sau switch. Instructiunea break accepta un argument numeric optional care va indica numarul de instructiuni imbricate care trebuiesc intrerupte.

Exemplul 2.7.2:

$arr = array( 'unu', 'doi', 'trei', 'patru', 'stop', 'cinci');
while( list( , $val) = each( $arr))
A if( $val == 'stop') break; /* Se poate scrie si "break 1;" */ echo "$val<br>\n";
S

/* Folosind un argument optional */
$i = 0;
while( ++$i)
A switch( $i)
A case 5: echo "La 5<br>\n"; break 1; /* Se incheie doar instructinuea switch */ case 10: echo "La 10 - iesire<br>\n"; break 2; /* Se incheie instructile switch si while */ default: break;
S
Scontinue
Instructiunea continue este utilizata intr-o bucla pentru a sari peste instructiunile de dupa continue si pana la sfarsitul blocului; executia iteratiei curente este intrerupa si se trece la executia iteratiei urmatoare. Instructiunea continue accepta un argument numeric optional care va indica cate bucle imbricate vor fi ignorate.

Exemplul 2.7.3:

while( list( $key, $val) = each( $arr))
A if( !( $key % 2)) // Evita elementele impare continue; executa_impar( $val);
S

$i = 0;
while( $i++ < 5)
A echo "Exterior<br>\n";
while( 1)
A echo "Mijloc<br>\n";
while( 1)
A echo "Interior<br>\n"; continue 3;
S echo "Aici nu afiseaza niciodata.<br>\n";
S echo "Nu faceti niciodata asta.<br>\n";
Sswitch
Instructiunea switch este echivalenta cu o serie de instructiuni if. Cu numeroase ocazii, veti avea nevoie sa comparati aceeasi variabila (sau expresie) cu mai multe valori diferite si sa executati diferite parti din cod in functie de valoarea obtinuta. Acesta este modul de executie al instructiunii switch.

Urmatorul exemplu ilustreaza doua modalitati diferite de a scrie acelasi lucru, una utilizeaza o serie de if si alta utilizeaza instructiunea switch (exemplul 2.7.4):

if( $i == 0) print "$i este egal cu 0"; if( $i == 1) print "$i este egal cu 1"; if( $i == 2) print "$i este egal cu 2";

switch( $i)
A case 0: print "$i este egal cu 0"; break; case 1: print "$i este egal cu 1"; break; case 2: print "$i este egal cu 2"; break;
SEste important sa intelegem modul de executie al instructiunii switch pentru a evita aparitia erorilor. Instructiunea switch se executa secvential, linie dupa linie. La inceput nu este executat nici un cod. Numai cand se gaseste o valoare a selectorului identica cu o constanta case, PHP executa instructiunile corespunzatoare respectivei constante case. PHP continua sa execute instructiunile pana la sfarsitul blocului de instructiuni switch sau pana cand intalneste instructiunea break. Daca nu utilizati instructiunea break la sfarsitul unui bloc case, PHP va continua sa execute instructiunile din urmatorul bloc case (exemplul 2.7.5):

switch( $i)
A case 0: print "$i este egal cu 0"; case 1: print "$i este egal cu 1"; case 2: print "$i este egal cu 2";
SIn acest exemplu, daca $i este egal cu 0, PHP va executa toate instructiunile print. Daca $i este egal cu 1, PHP va executa ultimele doua instructiuni print si numai daca $i este egal cu 2 veti obtine rezultatul scontat, adica se va afisa $i este egal cu 2. Deci, imporatant este sa folositi corect instructiunea break.

In comanda switch, conditia este evaluata o singura data si rezultatul este comparat cu fiecare constanta case. Intr-o instructiune elseif, conditia este reevaluata. Daca conditia voastra este mai complicata decat o simpla comparatie sau apare intr-o bucla, instructiunea switch se poate dovedi mai rapida.

Lista de instructiuni a unei constante case poate fi vida; in acest caz PHP va utiliza lista de instructiuni din case-ul urmator.

switch( $i)

A case 0: case 1: case 2: print "$i este mai mic decat 3, dar nu este negativ"; break; case 3: print "$i este egal cu 3";
SUn caz special il constituie expresia predefinita default. Aceasta expresie indica orice expresie diferita de constantele case anterioare (exemplul 2.7.6):

switch( $i)
A case 0: print "$i este egal cu 0"; break; case 1: print "$i este egal cu 1"; break; case 2: print "$i este egal cu 2"; break; default: print "$i nu este egal cu 0, 1 sau 2";
SObservatie: expresia predefinita default poate fi folosita oriunde in instructiunea switch.

Expresiile case pot fi orice expresie scalara de tip intreg, virgula mobila sau sir de caractere. Tablourile si obiectele pot fi folosite numai daca sunt dereferentiate la un tip simplu.

Sintaxa alternativa pentru aceasta structura de control este urmatoarea:

switch( $i): case 0: print "$i este egal cu 0"; break; case 1: print "$i este egal cu 1"; break; case 2: print "$i este egal cu 2"; break; default: print "$i nu este egal cu 0, 1 sau 2"; endswitch;include()
Functia include() introduce si evalueaza fisierul specificat in argument. Daca URL fopen wrappers nu sunt disponibile in PHP (asa cum sunt in configuratia implicita), puteti specifica fisierul care trebuie inclus utilizand un URL in locul unui pathname local. Pentru a evita utilizarea eronata a fisierului inclus, orice cod din fisierul destinatie care trebuie executat ca un cod PHP trebuie incadrat de tag-uri de inceput si sfarsit valide in PHP. De asemeni, se poate folosi o instructiune include() intr-o bucla pentru a include mai multe fisiere diferite, asa cum reiese din exemplul urmator:

$files = array( 'unu.inc', 'doi.inc', 'trei.inc'); for( $i = 0; $i < count( $files); $i++)
A include( $filesa $ii);
SInstructiunea include() este reevaluata de fiecare data cand este intalnita intr-un cod PHP. Deoarece include() este o constructie speciala a limbajului, trebuie sa o includeti intr-un bloc de instructiuni daca ea apare intr-un bloc conditional.

Exemplu:

/* Utilizarea este GRESITA si nu va functiona in modul dorit */ if( $condition) include( $file); else include( $other);

/* Aceasta este CORECT */ if( $condition)
A include( $file);
S else
A include( $other);
SIn PHP4, cat si in PHP3, se poate executa o instructiune return in interiorul unui fisier inclus cu include(), executia determinand incheierea procesului in respectivul fisier si revenirea in scriptul care l-a solicitat. De asemeni, PHP4 permite sa returnati valori din fisierele incluse cu include(). Puteti folosi aceste valori ca si cum ar fi returnate de o functie normala.

Exemplu:

/* Fisierul test.inc */
/* Se presupune ca fisierul test.inc exista in acelasi director cu fisierul main.html */ echo "Inainte de return<br>\n"; if( 1)
A return 27;
S echo "Dupa return<br>\n";/* ... in fisierul main.html */
/* Presupunem ca fisierul main.html contine aceasta: */
$retval = include( 'test.inc'); echo "Fisierul returneaza: '$retval'<br>\n";Atunci cand main.html este apelat in PHP3, el va genera o eroare de analiza la linia 3 deoarece in PHP3 nu putem evalua valori returnate de include(). In PHP4 rezultatul va fi:

Inainte de return
Fisierul returneaza: '27'Sa presupunem acum ca main.html a fost modificat si contine codul urmator:

include( 'test.inc'); echo "Intoarcere in main.html<br>\n";In PHP4 se va afisa:

Inainte de return
Intoarcere in main.htmlDin contra, PHP3 afiseaza:

Inainte de return
27 Intoarcere in main.html
Parse error: parse error in main.html on line 5Eroarea de analiza de mai sus este rezultatul faptului ca instructiunea return este inclusa impreuna cu test.inc in acelasi bloc. Daca instructiunea return este mutata in afara blocului, se afiseaza:

Inainte de return
27 Intoarcere in main.html"27" arata ca PHP3 nu suporta returnarea valorilor din fisiere in acest mod.

Este important de notat ca atunci cand un fisier este inclus cu include() codul pe care il contine mosteneste domeniul variabilelor corespunzator liniei pe care apare instructiunea include() in cod. Orice variabila disponibila pe respectiva linie va fi disponibila si in fisierul inclus.

include_once
Instructiunea include_once include si evalueaza fisierul specificat in timpul executiei scriptului. Comportamentul este similar cu cel al instructiunii include(), deosebirea majora fiind aceea ca daca codul din fisier a fost deja inclus in script operatia nu va fi repetata. Vom folosi aceasta instructiune cand un fisier ar putea fi inclus si evaluat de mai multe ori in executia unui anumit script si dorim sa ne asiguram ca includerea sa se va efectua numai odata pentru a evita problemele care pot sa apara la redefinirea functiilor, reinitializarea variabilelor etc.


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