for (pocetniIzraz; uvjet; ponavljajuciIzraz)
{
naredba1;
naredba2;
}
U zagradi nakon ključne riječi for nalaze se tri izraza odvojena znakom ; .
Svaki od ta tri izraza može se izostaviti.
Ako se izostavi uvjet, petlja će se izvršavati zauvijek.
Izrazi pocetniIzraz i ponavljajuciIzraz mogu sadržavati više naredbi, a u tom slučaju one su odvojene zarezima.
Primjer ispisivanja brojeva od 0 do 9 pomoću petlje for izgledat će ovako:
for ($i = 0; $i < 10; $i++)
{
echo $i . " ";
}
Petlja for najčešće se koristi kada je broj ponavljanja petlje zadan.
U takvim slučajevima se kao brojač koristi varijabla (u gornjem primjeru $i).
U početnom izrazu se postavlja početna vrijednost brojača (0), a u uvjetu konačna vrijednost brojača (10).
U ponavljajućem izrazu se obavlja povećanje (ili ponekad smanjivanje) vrijednosti brojača.
Iznos za koji se povećava brojač petlje naziva se još i korak petlje.
Za ispis članova polja može se koristiti i petlja foreach, čija je svrha upravo to.
Oblik petlje foreach je ovakav:
foreach ($polje as $vrijednost)
{
naredba1;
naredba2;
}
Ova petlja će obaviti naredbe unutar tijela petlje jedanput za svakog člana polja $polje, a vrijednost trenutnog člana polja bit će u varijabli $vrijednost.
Moguće je dobiti i ključ trenutnog člana tako da se petlja foreach napiše na ovakav način:
foreach ($polje as $kljuc => $vrijednost)
{
naredba1;
naredba2;
}
Ključ trenutnog člana bit će u varijabli $kljuc.
Na ovaj način bi se ispisali članovi polja korištenjem petlje foreach:
$gradovi = array("Zagreb","Split","Rijeka");
foreach ($gradovi as $grad)
{
echo $grad . " ";
}
Ako je uz vrijednost člana potrebno ispisati i njegov ključ, to je moguće učiniti kao u ovom primjeru:
$post_br = array ("Zagreb" => 10000,
"Split" => 21000,
"Rijeka" => 51000);
foreach ($post_br as $naziv => $broj)
{
echo "$broj $naziv <br />";
}
Upotrebom petlje foreach na ovaj način nije moguće izmijeniti vrijednost člana polja. Razlog tome je što se u svakom krugu petlje stvara kopija člana polja i smješta u varijablu $broj.
Izmjena te varijable neće se odraziti na vrijednost člana polja.
Da bi se izmijenila vrijednost člana polja, potrebno je u petlji foreach rabiti referencu na njega, a ne kopiju vrijednosti.
Referenca se dobiva pomoću operatora & i označava da varijabla pokazuje na originalnu vrijednost, te da će se zbog toga izmjena napravljena korištenjem reference odraziti na originalnu vrijednost.
U sljedećem primjeru koristi se referenca da bi se izmijenila originalna vrijednost člana polja. U ovom slučaju, izmjena će se odraziti na originalnom polju:
$brojevi = array(0,1,2,3,4);
foreach ($brojevi as &$broj)
{
echo $broj++;
}
Kao i uvjetne strukture, i petlje se mogu ugnježđivati jedne u drugu.
Unutrašnja petlja može se promatrati kao zaseban blok koda.
Sljedeći primjer pokazujeda vanjska petlja 3 puta poziva izvršavanje unutrašnje petlje, koja se izvršava 5 puta. To znači da se naredba za ispis koja se nalazi u tijelu unutrašnje petlje, izvršava 3 x 5 = 15 puta.
for ($i = 1; $i <= 3; $i++)
{
for ($j = 1; $j <= 5; $j++)
{
echo "$i.$j ";
}
echo "<br />";
}
Pomoću dvije ugnježđene petlje mogu se ispisati članovi dvodimenzionalnog polja:
$igra = array( array ("O", "O", ""),
array ("O", "X", "O"),
array ("X", "O", "X") );
for ($i = 0; $i < 3; $i++)
{
for ($j = 0; $j < 3; $j++)
{
echo igra[$i][$j] . " ";
}
echo "<br />";
}
Ponekad je, ako je neki uvjet ispunjen, potrebno prijevremeno završiti s izvođenjem petlje.
Izvršavanje petlje može se prekinuti navođenjem ključne riječi break.
U ovom primjeru, petlja bi trebala ispisati brijeve od 0 do 9, ali se, zbog ključne riječi break, izvršavanje petlje prekida nakon što se $i poveća na 6:
for ($i = 0; $i < 10; $i++)
{
if ($i == 6)
{
break;
}
echo $i . " ";
}
Također je moguće i preskakanje ostatka naredbi u petlji, i nastavak izvođenja petlje od sljedećeg kruga. Tome služi ključna riječ continue:
for ($i = 0; $i < 10; $i++)
{
if ($i == 6)
{
continue;
}
echo $i . " ";
}