Zanke
PHP tečaj: Zanke
Pri zankah se določen blok kode izvaja oziroma ponavlja toliko časa, dokler je zadoščeno nekemu pogoju.
Najprej pa si poglejmo osnovno obliko zanke:
V zanki for operiramo s števcem, ki ga običajno označimo z $i in z njim štejemo v celih številih.
Primer kode za izpis števil od 1 do 100:
Zanka for je zelo koristna tudi pri delu s polji. Primer obravnave 1-dimenzionalnega polja $polje, kjer izpišemo vse vrednosti podanega polja:
Ukaz count($polje) najprej prešteje število elementov v polju $polje, da se lahko potem z našo for zanko sprehodimo čez vse posamezne elemente. Vidite lahko tudi, da elemente polja štejemo od številke 0 dalje.
V primeru, da obravnavamo n-dimenzionalno polje, moramo gnezditi n zank for. Pri tem mora vsaka zanka uporabljati svoj števec — najpogosteje uporabljamo $i, $j, $k, ...
Primer za "sprehod" preko elementov v 2-dimenzionalnem polju dimenzij 3 x 3:
Ta zanka ima sledečo osnovno obliko:
Koda v bloku se izvaja, dokler je pogoj resničen. Resničnost pogoja se preverja na začetku vsake ponovitve. Če je pogoj ob začetku izvajanja zanke neresničen, se koda v zanki ne bo izvedla.
Podobna je tudi zanka do ... while:
Koda v bloku se izvaja, dokler je pogoj resničen. Posebnost zanke do ... while je v tem, da se izvede najmanj enkrat — tudi v primeru, ko je pogoj neresničen že ob samem začetku izvajanja zanke, saj se pogoj preverja šele po vsaki izvedbi.
Zanka se izvede tolikokrat, kolikor je elementov v polju. Ob vsaki ponovitvi nam je ključ trenutnega elementa na voljo v spremenljivki $kljuc, vrednost trenutnega elementa pa v spremenljivki $vrednost.
Omeniti velja, da lahko delček $kljuc => izpustimo, če nas ključi v polju ne zanimajo.
Primer za "sprehod" preko elementov asociativnega polja:
Vaš program bo v tem primeru nadaljeval z izvajanjem na enak način, kakor da bi se zanka končala sama od sebe.
Čestitamo — s poznavanjem zank ste se že močno približali nivoju programerskega znanja, kjer lahko ustvarite zelo uporabne programe.
Čas je torej za naslednji korak, kjer bomo sestavili prve spletne obrazce, preko katerih vam lahko uporabniki pošljejo zanimive (in mogoče nevarne?!) podatke...
Zanka for
Včasih želimo kakšno kodo izvesti večkrat (npr. 100x) zapored. Najpreprostejši primer tega je izpis števil od 1 do 100.Najprej pa si poglejmo osnovno obliko zanke:
for (inicializacija števca; pogoj; sprememba števca) {
// koda
}
V zanki for operiramo s števcem, ki ga običajno označimo z $i in z njim štejemo v celih številih.
- inicializacija števca — tukaj števec $i nastavimo na začetno vrednost, npr. na 1: $i = 1
Pozor: Do števca lahko dostopamo samo znotraj zanke. - pogoj — s pogojem določimo število ponovitev
Zanka se izvaja, dokler je pogoj resničen. Števec $i lahko npr. ob vsaki izvedbi zanke povečujemo, dokler je $i manjši ali enak 100: $i <= 100 - sprememba števca — običajno števec povečujemo za 1, kar označimo kot $i = $i + 1 ali krajše $i++
Če bi želeli števec zmanjševati za 1, bi uporabili ukaz $i = $i - 1 ali krajše $i--.
Primer kode za izpis števil od 1 do 100:
for ($i = 1; $i <= 100; $i++) {
echo $i . "<br />";
}
Poskusite: Zgornjo kodo, ki izpiše števila od 1 do 100, prekopirajte v svojo datoteko index.php med oznaki <?php in ?> ter jo poženite v brskalniku. Ste dobili izpis vseh 100 števil, kjer je vsako zaporedno število zapisano v svoji vrstici?
Poskusite izpisati števila od 200 do 0 v padajočem vrstnem redu.
Poskusite izpisati števila od 200 do 0 v padajočem vrstnem redu.
Zanka for je zelo koristna tudi pri delu s polji. Primer obravnave 1-dimenzionalnega polja $polje, kjer izpišemo vse vrednosti podanega polja:
$stevilo_elementov = count($polje);
for ($i = 0; $i < $stevilo_elementov; $i++) {
echo $polje[$i];
}
Ukaz count($polje) najprej prešteje število elementov v polju $polje, da se lahko potem z našo for zanko sprehodimo čez vse posamezne elemente. Vidite lahko tudi, da elemente polja štejemo od številke 0 dalje.
V primeru, da obravnavamo n-dimenzionalno polje, moramo gnezditi n zank for. Pri tem mora vsaka zanka uporabljati svoj števec — najpogosteje uporabljamo $i, $j, $k, ...
Primer za "sprehod" preko elementov v 2-dimenzionalnem polju dimenzij 3 x 3:
for ($i = 0; $i < 3; $i++) {
for ($j = 0; $j < 3; $j++) {
echo $polje[$i][$j];
}
}
Zanki while in do ... while
Včasih ne želimo operirati s števcem, ampak želimo le ponavljati nek del kode, dokler je zadoščeno nekemu pogoju. V tem primeru lahko uporabimo zanko while.Ta zanka ima sledečo osnovno obliko:
while (pogoj) {
// koda
}
Koda v bloku se izvaja, dokler je pogoj resničen. Resničnost pogoja se preverja na začetku vsake ponovitve. Če je pogoj ob začetku izvajanja zanke neresničen, se koda v zanki ne bo izvedla.
Podobna je tudi zanka do ... while:
do {
// koda
} while (pogoj);
Koda v bloku se izvaja, dokler je pogoj resničen. Posebnost zanke do ... while je v tem, da se izvede najmanj enkrat — tudi v primeru, ko je pogoj neresničen že ob samem začetku izvajanja zanke, saj se pogoj preverja šele po vsaki izvedbi.
Zanka foreach
To zanko uporabljamo pri delu s polji. Njena osnovna oblika je sledeča:foreach ($polje as $kljuc => $vrednost) {
// koda
}
Zanka se izvede tolikokrat, kolikor je elementov v polju. Ob vsaki ponovitvi nam je ključ trenutnega elementa na voljo v spremenljivki $kljuc, vrednost trenutnega elementa pa v spremenljivki $vrednost.
Omeniti velja, da lahko delček $kljuc => izpustimo, če nas ključi v polju ne zanimajo.
Primer za "sprehod" preko elementov asociativnega polja:
$polje = array("ime" => "Janez", "poklic" => "programer", "starost" => 26);
foreach ($polje as $kljuc => $vrednost) {
echo $kljuc . ": " . $vrednost . "<br />";
}
Poskusite: Poženite kodo iz zgornjega primera v svoji index.php datoteki med oznakama <?php in ?>.
Ukaz break
Izvajanje poljubne zanke (for, while, do ... while ali foreach) lahko kadarkoli prekinemo z ukazom break.Vaš program bo v tem primeru nadaljeval z izvajanjem na enak način, kakor da bi se zanka končala sama od sebe.
Čestitamo — s poznavanjem zank ste se že močno približali nivoju programerskega znanja, kjer lahko ustvarite zelo uporabne programe.
Čas je torej za naslednji korak, kjer bomo sestavili prve spletne obrazce, preko katerih vam lahko uporabniki pošljejo zanimive (in mogoče nevarne?!) podatke...