Instrukcija „Switch“ je sliฤna seriji „If“ naredbi koje se nalaze u istom izrazu. U mnogo situacija, trebaฤete da npr. uporeฤujete istu varijablu (ili ceo izraz) sa viลกe razliฤitih vrednosti, i pri tome da u zavisnosti od jednakosti ove dve vrednosti izvrลกite odreฤeni (razliฤit) programski kod. Ova naredba je ekvivalentna naredbi „Select … Case“, Visual Basic-a. U naredna dva primera videฤete dva naฤina za reลกavanje istog problema, prvi naฤin koristi seriju „If“ instrukcija, a drugi naฤin naredbu „Switch“:
<?php
if ($a == 0) {
print "a je jednako 0";
}
if ($a == 1) {
print "a je jednako 1";
}
if ($a == 2) {
print "a je jednako 2";
}switch ($a) {
case 0:
print "a je jednako 0";
break;
case 1:
print "a je jednako 1";
break;
case 2:
print "a je jednako 2";
break;
}
?>
Jako je bitno da razumete naฤin na koji se ova naredba izvrลกava, jer ฤete inaฤe naฤiniti greลกke. Naredba „Switch“ se izvrลกava liniju po liniju (zapravo, naredbu po naredbu). U prvom trenutku ne izvrลกava se ni jedna naredba. Tek kada PHP parser utvrdi koja PHP vrednost u Case izrazu odgovara vrednosti Switch izraza, tada poฤinje da se izvrลกava programski kod. PHP izvrลกava instrukcije do kraja „Switch“ bloka, ili do „Break“ naredbe. Pazite, ukoliko ne napiลกete naredbu „Break“ na kraju svakog „Case“ bloka, PHP ฤe nastavljati da izvrลกava sve naredne „Case“ blokove. Pogledajte sledeฤi primer:
<?php
switch ($a) {
case 0:
case 1:
case 2:
print "a je manje od 3, ali nije negativno";
break;
case 3:
print "a je 3";
}
?>
Ukoliko je varijabla $a jednaka nuli (0), PHP ฤe izvrลกiti sve naredbe za ispis (Print)! Ako je vrednost varijable jedan (1), PHP ฤe izvrลกiti obe, donje naredbe za ispis. Tek ako je vrednost varijable dva (2), imaฤemo „oฤekivano“ ponaลกanje ove strukture i ispisaฤe se samo „a je manje od 3, ali nije negativno„, jer iza ove naredbe sledi naredba prekida – „Break“. Ovo znaฤi da obavezno morate koristiti naredbu prekida.
Kod naredbe „Switch“ uslov se proverava samo jedanput, a rezultat se uporeฤuje sa svakom „Case“ instancom. Naredba „Switch“ je bolje reลกenje od viลกestrukih „If … else if“ naredbi, jer se brลพe izvrลกava (zato ลกto se uslov viลกestruko proverava). Specijalan sluฤaj Case izraza predstavlja „podrazumevana“ Case naredba, ฤiji se programski kod izvrลกava ukoliko nije zadovoljena ni jedna prethodna Case instanca. Evo i primera:
<?php
switch ($a) {
case 0:
print "a je 0";
break;
case 1:
print "a je 1";
break;
case 2:
print "a je 2";
break;
default:
print "a nije ni 0, ni 1, ni 2";
}
?>
Pratite Krstaricu na www.krstarica.com