PHP – „While“ petlja

Nakon „If“ strukture prelazimo na obradu najjednostavnijeg tipa petlji u PHP-u, a to je „While“ petlja. Struktura i sintaksa u PHP-u je vrlo slična sintaksi ove petlje u programskom jeziku C:


while (izraz)
naredbe

Semantika same petlje je vrlo jednostavna, ona „kaže“ PHP-u da ponavlja izvršavanje ugrađenih naredbi, sve dok je ispunjen uslov, tj. dok je vrednost „izraza“ TRUE. Vrednost izraza se proverava samo na svakom početku ponavljanja petlje, tako da ako se ova vrednost promeni tokom izvršavanja ugneždenih instrukcija, izvršenje se neće prekinuti do kraja date iteracije. U slučaju da je vrednost „izraz“-a FALSE, neće se izvršiti ugneždene naredbe, a izvršenje programa će se prebaciti na sledeću instrukciju koja dolazi nakon petlje.

Kao i kod „IF“ grananja, i ovde možete grupisati više instrukcija unutar jedne „While“ petlje, i to uz pomoć vitičastih zagrada, ili uz korišćenje alternativne sintakse:


while (izraz) :
…naredbe…
endwhile;

U sledećim redovima možete videti dve „While“ petlje, napisane na dva načina, koje „štampaju“ cifre od 1 do 10:


<?php
/* 1. primer */

$a= 1;
while ($a <= 10) {
print $a++;
}

/* 2. primer */

$a = 1;
while ($i <= 10):
print $a;
$a++;
endwhile;

?>


Kao što vidite, ovde smo upotrebili inkrementalni operator (++) koji uvećava vrednost varijable „$a“, i to nakon njenog štampanja.

Slična prethodnoj „While“ petlji je „Do…While“ petlja, a razlika je samo u poziciji proveravanja „izraz“-a. Kod ove petlje provera istinosne vrednosti izraza se vrši na kraju petlje svake iteracije. Glavna razlika je u tome što će se kod ove druge petlje (do…while) prva iteracija svakako izvršiti, za razliku od „While“ gde se možda neće izvršiti ni jedna iteracija (u slučaju da je vrednost izraza FALSE).


<?php
$a = 0;
do {
print $a;
} while ($a>0);
?>

Prethodna petlja će se izvršiti tačno jedanput, jer se nakon prve iteracije proverava izraz ($a>0), koji će imati vrednost FALSE. Zbog ove vrednosti izraza petlja će prekinuti dalje izvršavanje.

Pratite Krstaricu na www.krstarica.com