Zanko for uporabimo takrat, ko vnaprej vemo ali vsaj približno ocenimo, kolikokrat želimo ponoviti določen del kode. Posebej primerna je za primere, ko uporabljamo števec in želimo natančno določiti začetek, pogoj izvajanja in spremembo števca.
Pomni: Zanka for je najprimernejša takrat, ko je število ponovitev povezano s števcem.
Osnovna pravila
Sintaksa zanke for je:
for (inicializacija; pogoj; korak) {
koda, ki se ponavlja;
}
Vsak del zanke ima svojo nalogo:
- inicializacija se izvede samo enkrat na začetku zanke,
- pogoj se preveri pred vsako ponovitvijo,
- korak se izvede na koncu vsake ponovitve.
Če je pogoj resničen, se zanka nadaljuje. Če je neresničen, se zanka konča. Posamezni deli zanke for so lahko tudi prazni, vendar mora biti tak zapis uporabljen premišljeno.
Pozor: Če je pogoj v zanki izpuščen, PHP zanko obravnava kot neskončno. V takem primeru jo je treba praviloma končati z ukazom break.
Osnovni primer
<?php
for ($i = 1; $i <= 10; $i++) {
echo $i . " ";
}
?>
V tem primeru se spremenljivka $i na začetku nastavi na 1, zanka pa se izvaja, dokler velja pogoj $i <= 10. Po vsaki ponovitvi se vrednost spremenljivke $i poveča za 1.
Pomni: Zanka for združuje števec, pogoj in spremembo števca na enem mestu, zato je njena zgradba pogosto zelo pregledna.
Izpis števil z zanko for
<?php
for ($i = 0; $i <= 5; $i++) {
echo "Vrednost je: " . $i . "<br>";
}
?>
Vrednost je: 1
Vrednost je: 2
Vrednost je: 3
Vrednost je: 4
Vrednost je: 5
Izpis tabele z zanko for
Zanka for je uporabna tudi pri ustvarjanju ponavljajočih se delov HTML kode, na primer vrstic v tabeli.
<?php
$cena = 5;
echo "<table>";
echo "<tr><th>Količina</th><th>Cena</th></tr>";
for ($stevec = 10; $stevec <= 100; $stevec += 10) {
echo "<tr><td>" . $stevec . "</td><td>" . ($cena * $stevec) . "</td></tr>";
}
echo "</table>";
?>
| Količina | Cena |
|---|---|
| 10 | 50 |
| 20 | 100 |
| 30 | 150 |
| 40 | 200 |
| 50 | 250 |
| 60 | 300 |
| 70 | 350 |
| 80 | 400 |
| 90 | 450 |
| 100 | 500 |
Pomni: Zanko for pogosto uporabljamo za ustvarjanje ponavljajočih se delov izpisa, na primer vrstic v tabeli, seznamov ali drugih struktur HTML.
Zanka for z ukazom break
Včasih je pogoj v zanki namenoma izpuščen, izvajanje pa prekinemo z ukazom break.
<?php
for ($i = 1; ; $i++) {
if ($i > 10) {
break;
}
echo $i . " ";
}
?>
Ukaz break takoj prekine izvajanje zanke in program nadaljuje z naslednjim ukazom za zanko.
Pozor: Ukaz break je uporaben, vendar preveč pogosta uporaba lahko zmanjša preglednost kode.
Ukaz continue
V zanki for lahko uporabimo tudi ukaz continue. Ta preskoči preostanek trenutne ponovitve in nadaljuje z naslednjo.
<?php
for ($i = 1; $i <= 5; $i++) {
if ($i === 3) {
continue;
}
echo $i . " ";
}
?>
V tem primeru se število 3 ne izpiše, ker se pri tej ponovitvi preostanek kode preskoči.
Pomni: Ukaz continue ne konča zanke, ampak preskoči samo trenutno ponovitev.
Primerjava: for, while in foreach
| Zanka | Kdaj je najprimernejša | Značilnost |
|---|---|---|
for |
ko uporabljamo števec in poznamo število ponovitev | inicializacija, pogoj in korak so zapisani skupaj |
while |
ko število ponovitev ni vnaprej znano | zanka se izvaja, dokler velja pogoj |
foreach |
ko prehajamo po elementih polja | ni potreben ročni števec |
Pomni: Zanko for izberemo predvsem takrat, ko je ponavljanje povezano s števcem.
Kdaj uporabimo zanko for
Zanka for je posebej primerna takrat, ko imamo števec in približno ali natančno vemo, koliko ponovitev potrebujemo. Pogosto jo uporabljamo pri izpisu števil, generiranju tabel, seznamov in drugih ponavljajočih se struktur.
Priporočila
- Za števske ponovitve uporabljamo zanko
for. - Imena števcev naj bodo kratka, a smiselna.
- Pogoj v zanki naj bo zapisan jasno in pregledno.
- Če je mogoče, naj bo sprememba števca enostavna in predvidljiva.
- Ukaza
breakincontinueuporabljamo premišljeno.
Pozor: Nepregledni pogoji ali zapleteni koraki v zanki hitro zmanjšajo razumljivost programa.
Pogoste napake
- Začetna vrednost števca ni pravilno nastavljena.
- Pogoj zanke povzroči premalo ali preveč ponovitev.
- Korak števca manjka ali ni ustrezen, zato se zanka ne konča ob pričakovanem času.
- Pri uporabi ukaza
continuese napačno pričakuje, da bo zanka končana. - Pri uporabi ukaza
breakse logika zanke zaplete in postane manj pregledna. - Za obdelavo elementov polja se uporabi zanka
for, čeprav bi bila zankaforeachprimernejša.
Pozor: Napačno zapisan pogoj ali korak sta med najpogostejšimi razlogi za nepravilno delovanje zanke for.
Sklep
Zanka for je temeljna programska struktura za ponavljanje kode v PHP. Najprimernejša je za primere, kjer uporabljamo števec in želimo natančno določiti potek ponavljanja. Pri njeni uporabi je pomembno, da pravilno določimo začetno vrednost, pogoj in korak ter da po potrebi smiselno uporabimo ukaza break in continue.