Stavek if...elseif...else uporabimo takrat, ko želimo preveriti več različnih pogojev. Pogoji se preverjajo po vrsti od zgoraj navzdol. Izvede se samo prvi blok kode, katerega pogoj je resničen.
Če prvi pogoj v stavku if ni resničen, PHP preveri naslednji pogoj v stavku elseif. Če ni resničen noben pogoj, se izvede blok else, če je zapisan.
Pomni: Pri stavku if...elseif...else se izvede samo prva veja, katere pogoj je resničen.
Osnovna pravila
Sintaksa stavka if...elseif...else je:
if (pogoj1) {
koda, ki se izvede, če je pogoj1 resničen;
} elseif (pogoj2) {
koda, ki se izvede, če je pogoj2 resničen;
} else {
koda, ki se izvede, če ni resničen noben pogoj;
}
- pogoji se preverjajo po vrsti od zgoraj navzdol,
- izvede se samo prvi blok kode, katerega pogoj je resničen,
- blok
elseje neobvezen, - v enem stavku lahko uporabimo več vej
elseif, - zaradi preglednosti je priporočljivo uporabljati zapis
elseifnamestoelse if.
Pozor: Vrstni red pogojev je pomemben. Če je širši pogoj zapisan pred ožjim, se lahko izvede prej in prepreči preverjanje naslednjih vej.
Primer, ko je $a večji od $b
<?php
$a = 3;
$b = 1;
if ($a > $b) {
echo "a je večji kot b";
} elseif ($a === $b) {
echo "a je enak b";
} else {
echo "a je manjši kot b";
}
?>
Ker je pogoj $a > $b resničen, se izvede prvi blok kode. Naslednji pogoji se ne preverjajo več.
Pomni: Ko PHP najde prvo resnično vejo, preostalih pogojev v isti strukturi ne preverja več.
Primer, ko je $a enak $b
<?php
$a = 3;
$b = 3;
if ($a > $b) {
echo "a je večji kot b";
} elseif ($a === $b) {
echo "a je enak b";
} else {
echo "a je manjši kot b";
}
?>
V tem primeru prvi pogoj ni resničen, zato PHP preveri naslednjo vejo elseif. Ker je pogoj $a === $b resničen, se izvede ta veja.
Primer, ko je $a manjši od $b
<?php
$a = 3;
$b = 5;
if ($a > $b) {
echo "a je večji kot b";
} elseif ($a === $b) {
echo "a je enak b";
} else {
echo "a je manjši kot b";
}
?>
Ker ni resničen ne prvi ne drugi pogoj, se izvede veja else.
Primerjava: if, if...else in if...elseif...else
| Zapis | Kdaj ga uporabimo | Značilnost |
|---|---|---|
if |
ko preverjamo en sam pogoj | izvede se samo ob resničnem pogoju |
if...else |
ko izbiramo med dvema možnostma | ena veja za resničen, druga za neresničen pogoj |
if...elseif...else |
ko preverjamo več različnih možnosti | izvede se samo prva ustrezna veja |
Pomni: Zapis if...elseif...else je primeren takrat, ko imamo več možnih poti izvajanja programa in želimo izbrati natanko eno.
Priporočila
- Pogoje zapisujemo od bolj posebnih proti bolj splošnim.
- Za več medsebojno izključujočih možnosti uporabljamo enotno strukturo
if...elseif...else. - Pri primerjanju vrednosti je pogosto smiselno uporabiti strogo primerjavo
===. - Vejo
elseuporabimo takrat, ko želimo zajeti tudi vse preostale primere. - Kodo znotraj vej pišemo pregledno in z enotnim zamikanjem.
Pozor: Če pogoji niso zapisani jasno ali logično urejeno, postane potek odločanja težje razumljiv.
Pogoste napake
- Pogoji so zapisani v neustreznem vrstnem redu.
- Za primerjanje enakosti se uporabi neustrezen operator.
- Namesto enotne strukture
if...elseif...elsese uporabi več ločenih stavkovif, čeprav so veje medsebojno izključujoče. - Veja
elsemanjka, čeprav bi bilo smiselno obravnavati tudi preostale možnosti. - V kodi se napačno pričakuje, da se bo izvedlo več vej hkrati.
Pozor: Najpogostejši vzroki za napake so napačen vrstni red pogojev, nejasna logika odločanja in neustrezna izbira operatorjev.
Kdaj uporabimo if...elseif...else
Ta zapis uporabimo takrat, ko imamo več možnih poti izvajanja programa in želimo med njimi izbrati natanko eno. Tako je koda pogosto preglednejša kot pri več ločenih stavkih if.
Sklep
Stavek if...elseif...else je osnovna struktura odločanja v PHP, s katero pregledno obravnavamo več različnih pogojev. Pri njegovi uporabi je pomembno, da pogoje uredimo smiselno, uporabljamo ustrezne operatorje in jasno ločimo posamezne možnosti izvajanja programa.