PHP lekcije - lekcija 12 - Petlje while, foreach, for
Prilično često u programiranju, kao i u svakodnevnom životu, moramo da izvršavamo ponavljajuće radnje dok nas rezultat ne zadovolji. U svakodnevnom životu to nazivamo mukom, u programiranju petljama (loops). Petlje se vrlo često sreću u PHP-u, jer su zgodan način za prolazak kroz nizove, računanje funkcija i još mnogo toga što se može uraditi pomoću petlji. Počnimo sa najjednostavnijom i najpopularnijom - while.
PHP while petlje
while je vrlo jednostavan, u okruglim zagradama pišemo uslove, u vitičastim šta treba uraditi kada je uslov ispunjen. Uslov je logički izraz koji može imati dve vrednosti TRUE ili FALSE. Ako želite da još jednom razumete logičke izraze, trebalo bi da pročitate lekciju o if operatoru. A sada primer while:
<?php $counter = 5; $newArray = array(); while($counter > 2){ $newArray[]= $counter; $counter--; } print_r($newArray); ?>
Kao rezultat biće prikazani elementi niza 5,4,3. Pogledajmo kako je sve to išlo:
1. korak. $counter = 5 (5 > 2)
2. korak. $counter = 4 (4 > 2)
3. korak. $counter = 3 (3 > 2)
4. korak. $counter = 2 (2 = 2, uslov nije više ispunjen, zato se radnja nije desila i u nizu nema 2)
Hajde da razmotrimo još jedan primer tabulacije funkcije y(x) = 2x - 1:
<?php // funkcija y(x) = 2x - 1; $x = -10; while($x <= 10){ $y = 2*$x-1; print 'y(' . $x . ')=' . $y . '<br />'; $x++; } ?>
Kao rezultat, vrednosti funkcije za x iz intervala [-10,10] biće prikazane u koloni.
Ovo je blok šema while petlje, opšti izgled rada ove petlje. Imamo uslov, imamo telo petlje, dok je uslov ispunjen, telo petlje se izvršava, a kada uslov nije ispunjen, PHP nastavlja sa izvršavanjem sledećeg koda.
Još jedan VAŽAN detalj. Ako uklonite liniju $x++, zahvaljujući kojoj se naš brojač menja tako da uslov prestane da važi. A šta ako uslov uvek važi?
<?php // funkcija y(x) = 2x - 1; $x = -10; while($x <= 10){ $y = 2*$x-1; print 'y(' . $x . ')=' . $y . '<br />'; // $x++; } ?>
Tada će biti vrlo, vrlo loše. Desiće se kritična greška, telo naše petlje će se izvršavati stalno. Ova situacija se naziva beskonačna petlja. Izbegavajte takve situacije, beskonačna petlja može uzrokovati da vaš sajt ne radi!
PHP foreach petlje
Još jedna neophodna petlja, često se koristi kada treba da se prođe kroz niz. Pod "proći kroz" mislim na to da uzmemo jedan element niza, izvršimo neku radnju nad njim, zatim uzmemo sledeći element i izvršimo istu radnju, i tako dalje dok ne prođemo kroz sve elemente.
Hajde da pogledamo primer, recimo da imamo deset elemenata "crveni" i "plavi", hajde da prebrojimo koliko ima crvenih elemenata:
<?php $counter = 0; $newArray =array( 1=>'crveni', 2=>'plavi', 3=>'plavi', 4=>'crveni', 5=>'crveni', 6=>'plavi', 7=>'crveni', 8=>'plavi', 9=>'crveni', 10=>'plavi', ); foreach($newArray as $key){ if($key == 'crveni'){ $counter++; } } print 'Imamo ' . $counter . ' crvenih elemenata'; ?>
Mislimo da je sa ovim jednostavnim primerom sve jasno. Operator as se koristi u ovom slučaju za prolazak kroz elemente jedan po jedan. Kada se svi elementi prođu, izvršavanje foreach petlje se završava.
Ali nisu svi nizovi tako jednostavni, dešava se i da niz sadrži mnogo ugnježdenih nizova. I svaki od tih podnizova može takođe biti prošao:
<?php $counter = 0; $newArray = array( 1=>array( 1 => 'crveni', 2 => 'plavi', 3 => 'plavi', ), 2=>array( 1 => 'crveni', 2 => 'crveni', 3 => 'plavi', ) ); foreach($newArray as $key){ foreach($key as $element){ if($element == 'crveni'){ $counter++; } } } print 'Imamo ' . $counter . ' crvenih elemenata'; ?>
Mislimo da je foreach zasad prilično jasno, mislim da ćemo se ovde zaustaviti, foreach će se još pojavljivati u mojim primerima.
FOR petlja
For petlja je slična while petlji. For se obično koristi kada je unapred poznat broj ponavljanja petlje. Na primer 10 ili 100 ponavljanja:
for($i=0;$i<10;$i++){ // deset ponavljanja }
Hajde sada da razložimo od čega se sastoji for petlja.
for(){ }
Kao i kod prethodnih petlji, svi parametri for petlje pišu se u okruglim zagradama. Obično se koriste tri parametra:
1. $i=0 - inicijalizacija brojača, promenljive u koju ćemo upisivati broj trenutnog ponavljanja.
2. $i<10 - uslov pod kojim će for petlja raditi.
3. $i++ - povećanje brojača za jedan, da bi se prešlo na sledeće ponavljanje.