Načrtovanje in razvoj spletnih aplikacij

Zanka FOR

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: 0
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činaCena
1050
20100
30150
40200
50250
60300
70350
80400
90450
100500

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 break in continue uporabljamo 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 continue se napačno pričakuje, da bo zanka končana.
  • Pri uporabi ukaza break se logika zanke zaplete in postane manj pregledna.
  • Za obdelavo elementov polja se uporabi zanka for, čeprav bi bila zanka foreach primernejš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.