Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Cicluri si structuri repetitive in PHP

php


Cicluri si structuri repetitive in PHP

Ciclurile (buclele) sunt folosite atunci cand dorim sa executam de mai multe ori un bloc (ex: parcurgerea unui vector).

while - verifica o conditie si daca aceasta este adevarata executa blocul de dupa conditie. Pentru ca while verifica o conditie la inceput, ciclul este cu test initial.



Ex:

$i=5;

while ($i>=0)

do while - executa blocul de dupa do, urmand ca la sfarsitul blocului sa se evalueze conditia, astfel fiind un ciclu cu test final. Este de preferat sa folositi do while atunci cand doriti ca un bloc sa se execute de minim o data.

Ex:

$i=5;

do while ($i>=0);

Daca in primul exemplu (while) am fi avut un i negativ ciclul nu ar fi afisat nimic, in schimb la al doilea exemplu (do while) ar fi afisat valoarea lui i dupa care nu ar mai fi inceput iteratia urmatoare.

Aplicatie : Vrem sa verificam daca un numar este prim sau nu.

<?php

$nr=15;

$impartit=2;

do while ($rest!=0 && $impartit<$nr);

if ($impartit<$nr || $nr==0)

echo "Numarul NU este prim!";

else echo "Numarul este prim !";

?>

for - este un ciclu cu intitializare de parametru si cu test initial. Este folosit acolo unde se doreste control total asupra numarului de iteratii (vectori).

Ex:

for ($contor=1;$contor<=10;$contor++) echo $contor."/";

Rezultatul va fi : 1/2/3/4/5/6/7/8/9/10/

Remarcam claritatea cu care se poate controla numarul de iteratii (de 10 ori).

Acelasi lucru l-am fi putut scrie cu ajutorul unei bucle while :

Ex:

$contor=0;

while ($contor<10) ;

De cate ori s-ar fi executat aceasta bucla ? De 10 ori, pornind cu un contor de la 0, pe care il incrementam inainte de a-i afisa valoarea.

Structuri repetitive (vectori) - reprezinta un set de variabile cu acelasi nume, dar un index diferit. Fiecare membru al unui vector este numit element. Diferentierea dintre elemente se face cu ajutorul parantezelor patrate [] in mijlocul carora este un index, ce poate fi de tip numeric sau (spre deosebire de limbajul C++) un string.


Ex:

<?

//rezultatele obtinute la o extragere 6/49

$numar[1]=15;$numar[2]=7;$numar[3]=13;
$numar[4]=44;$numar[5]=9;$numar[6]=21;

//parcurgerea si afisarea rezultatelor

for ($i=1;$i<=6;$i++) echo $numar[$i]."/";

//date despre persoane - matrice

$date[1]["nume"]="Ion";

$date[1]["prenume"]="Costin";

$date[1]["varsta"]=30;

$date[2]["nume"]="Hagi";

$date[2]["prenume"]="Gheorghe";

$date[2]["varsta"]=38;

$date[3]["nume"]="Pop";

$date[3]["prenume"]="Vasile";

$date[3]["varsta"]=19;

//parcurgerea si afisarea datelor

for ($i=1;$i<=3;$i++)

?>





Pentru a afla numarul de elemente al unui vector putem folosi functia count(), ce admite ca parametru vectorul pentru care calculam numarul de elemente.

Ex:

//parcurgerea si afisarea datelor

for ($i=1;$i<=count($date);$i++)

Initializarea vectorilor se mai poate face folosind functia array().

Ex:

$orase=array("Bucuresti","Constanta","Iasi");

//automat se va crea indexul pornind de la 0

for ($i=0;$i<count($orase);$i++) echo $orase[$i];

//daca dorim ca indexul sa plece de la alt numar

$orase=array(1=>"Bucuresti",2=>"Constanta",3=>"Iasi");

for ($i=1;$i<=count($orase);$i++) echo $orase[$i];

//index de tip string

$orase=array("bu"=>"Bucuresti","ct"=>"Constanta","is"=>"Iasi");

//parcurgerea urmatoare nu va avea nici un sens

for ($i=1;$i<=count($orase);$i++) echo $orase[$i];

//in locul ei se poate parcurge vectorul utilizand functia foreach()

foreach ($orase as $valoarecurenta) echo $valoarecurenta."/";

Daca avem un vector initializat sub forma :

<?
$date=array(1=>"unu",30=>"doi","aa"=>"text");
?>

Nu am putea face nimic cu o bucla standard, ci doar cu foreach();

Vom folosi functia next() pentru a pozitiona pointerul pe inregistrarea urmatoare si functia prev() pe cea dinainte si vom afisa folosindu-ne de functia key() ce returneaza indexul curent.

<?
$date=array(1=>"unu",30=>"doi","aa"=>"text");
echo $date[key($date)];
next($date);
next($date);
echo $date[key($date)];

prev($date);

echo $date[key($date)];
?>

Ultima varianta de citire a vectorilor indexati non-secvential este folosind functiile list() si each().

while(list($index,$element))= each ($date)

Sortarea vectorilor

Functia sort() este cea mai des folosita.

Ex:

$orase=array("zalau","constanta","iasi","bucuresti");

//afisare

for($i=0;$i<count($orase);$i++) echo $orase[$i]."/";

//rezulatul va fi afisat in ordinea definirii

sort($orase);

//afisare dupa sortare

for($i=0;$i<count($orase);$i++) echo $orase[$i]."/";

Functia rsort() sorteaza descrescator un vector (invers decat sort()).

Functia asort() sorteaza crescator un vector pastrand relatia element->index.

Ex:

$orase=array("bu"=>"bucuresti","is"=>"iasi","ct"=>"constanta");

asort($orase);

//afisare

foreach ($orase as $val) echo $val."/";

//in exemplul precedent (sort) la o afisare de forma

echo $orase["is"];

//se pierdea indexul, astfel ca la afisare ar fi scris constanta in loc de iasi.

Functia arsort() sorteaza descrescator un vector pastrand relatia element->index.

Functia ksort() sorteaza crescator un vector, dupa valoarea indexului, nu al elementelor.

Ex:

$orase=array("bu"=>"bucuresti","is"=>"iasi","ct"=>"constanta");

ksort($orase);

//afisare

foreach ($orase as $val) echo $val."/";

implode() si explode()

In cazul in care avem un vector si dorim ca toate elementele sale sa le punem intr-un string putem scrie :

Ex:

<?

$v=array("ion","matei","gheorghe");

foreach ($v as $val) $string.=$val.",";

//am folosit virgula ca delimitator

?>

Sau putem apela la functia implode() astfel :

<?

$v=array("ion","matei","gheorghe");

$string=implode(",",$v);

//in care virgula dintre ghilimele este de asemenea delimitator

?>

Inversa acestei functii este explode(), care transforma un string in care cuvintele cheie sunt delimitate dupa un semn distinct intr-un vector al carui elemente sunt cuvintele cheie, dupa cum urmeaza:

Ex:

<?

$string="ion,matei,gheorghe";

$v=explode(",",$string);

//afisarea se face standard

foreach ($v as $val) echo $val."<br>";

?>


Document Info


Accesari: 2381
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )