Pogojni stavki
PHP tečaj: Pogojni stavki
Do sedaj so se naši programi izvajali "linearno", kar pomeni, da so se izvedle vse vrstice naše programske kode, druga za drugo, po vrsti.
V tem poglavju pa bomo spoznali, kako lahko glede na neke podatke oz. izjave izvajamo različno kodo. Z uvedbo pogojnih stavkov se bo nek blok kode, zapisane med dvema zavitima oklepajema { in }, izvedel samo v primeru, ko bo zadoščeno nekemu pogoju ali skupini pogojev.
Zaporedno izvajanje ukazov:
Pogojni stavek, kjer preverjamo resničnost enega pogoja:
Pogojni stavek, kjer preverjamo neresničnost (lažnost) enega pogoja:
Pogojni stavek, kjer preverjamo resničnost dveh pogojev:
Omenimo še dve krajši obliki pogojnega stavka if, kjer ne uporabimo zavitih oklepajev { in } v primeru, kadar želimo izvesti samo en ukaz oziramo glede na pogoj vrniti dve različni vrednosti:
Primerjava številčnih vrednosti:
Primerjava nizov, spremenljivk tipa boolean in objektov:
V glavi stavka switch navedemo spremenljivko, katere vrednost želimo primerjati z našim seznamom pričakovanih vrednosti. Znotraj samega stavka switch pa navedemo poljubno število elementov case, kjer navedemo možne (pričakovane) vrednosti spremenljivke.
Za dvopičji (:) pride koda, ki naj se izvrši v posameznem primeru. Za vsakim elementom case pride še ukaz break, s katerim izstopimo iz izvajanja kode v stavku switch.
Poseben ukaz je še default, ki igra enako vlogo kot else v stavku if — koda, ki je napisana znotraj bloka default, se izvrši le v primeru, ko so vsi prejšnji kriteriji odpovedali. Ta blok kode lahko sicer tudi izpustimo.
Super — zdaj ste se spoznali s pravim programiranjem!
V naslednjem poglavju (o zankah) pa si bomo ogledali številne praktične primere...
V tem poglavju pa bomo spoznali, kako lahko glede na neke podatke oz. izjave izvajamo različno kodo. Z uvedbo pogojnih stavkov se bo nek blok kode, zapisane med dvema zavitima oklepajema { in }, izvedel samo v primeru, ko bo zadoščeno nekemu pogoju ali skupini pogojev.
Pogojni stavek if
Oglejmo si nekaj primerov "linearnega" in pogojnega izvajanja ukazov z if in else:Zaporedno izvajanje ukazov:
a; // ukazi a, b in c
b; // se izvedejo enkrat in
c; // po vrsti: najprej a, nato b, in na koncu še c
Pogojni stavek, kjer preverjamo resničnost enega pogoja:
a;
b; // ukaza a in b se vedno izvedeta
if (pogoj) {
c; // ukaz c se izvede samo, če je pogoj resničen (true)
} else {
d; // ukaz d se izvede samo, če je pogoj neresničen (false)
}
V zgornjem primeru lahko celoten blok kode else tudi izpustimo, če ne želimo ob neresničnosti pogoja izvajati nobene kode.Pogojni stavek, kjer preverjamo neresničnost (lažnost) enega pogoja:
if (!pogoj) {
e; /* ker je pred pogojem znak za negacijo (!),
se ukaz e izvede samo, če je pogoj neresničen (false) */
} else {
f; // v tem primeru se ukaz f izvede, če je pogoj resničen
}
Pogojni stavek, kjer preverjamo resničnost dveh pogojev:
if (pogoj1 AND pogoj2) {
g; // ukaz g se izvede samo, če sta pogoja pogoj1 in pogoj2 hkrati resnična
} else {
h; /* ukaz h se izvede, če pogoja pogoj1 in pogoj2 nista hkrati resnična
(torej je resničen samo eden od njiju ali pa celo nobeden) */
}
Omenimo še dve krajši obliki pogojnega stavka if, kjer ne uporabimo zavitih oklepajev { in } v primeru, kadar želimo izvesti samo en ukaz oziramo glede na pogoj vrniti dve različni vrednosti:
// dva primera, kjer ne uporabimo zavitih oklepajev,
// ker vsak blok kode vsebuje samo en ukaz
if ($pogoj) ukaz(); else drug_ukaz();
if ($pogoj) $spr = "vrednost"; else $spr = "druga vrednost";
// primer, kjer želimo glede na resničnost pogoja vrniti dve različni vrednosti
$vrednost = (pogoj) ? "vrednost ob resničnosti" : "vrednost ob neresničnosti";
Pogojni stavek else if
Včasih želimo preveriti več možnosti stanja nekega pogoja. To lahko storimo z ukazom else if, ki ga dodamo v našo osnovno obliko pogojnega stavka if:if (pogoj1) {
// ukazi, ki se izvedejo, če je pogoj1 resničen
} else if (pogoj2) {
/* ukazi, ki se izvedejo, če pogoj1 ni resničen,
je pa resničen pogoj2 */
} else if (pogoj3) {
/* ukazi, ki se izvedejo, če pogoj1 in pogoj2 nista resnična,
je pa resničen pogoj3 */
} else {
/* ukazi, ki se izvedejo, če pogoj1, pogoj2 in pogoj3
niso resnični */
}
Pogoji
Poznamo več različnih vrst pogojev. Najbolj osnovni so primerjalni pogoji.Primerjava številčnih vrednosti:
- $a < 5 — število, ki je shranjeno v spremenljivki $a, je manjše od 5
- $a > 5 — število $a je večje od 5
- $b >= $c — število $b je večje ali enako kot število $c
- $b <= $c — število $b je manjše ali enako kot število $c
- $d == 1 — število $d je enako 1 (za primerjanje obvezno uporabimo dva enačaja!)
- $d != 1 — število $d ni enako 1
Primerjava nizov, spremenljivk tipa boolean in objektov:
- $ime == "Janez" — preverjamo, če je v spremenljivki $ime shranjen niz "Janez"
- $ime != "Janez" — v spremenljivki $ime ni shranjen niz "Janez"
- $dezuje == true ali $dezuje — spremenljivka $dezuje je tipa boolean in je resnična (true)
- $dezuje == false ali !$dezuje — spremenljivka $dezuje ni resnična
- $objekt1 === $objekt2 — oba objekta1 sta istega tipa z isto vrednostjo (uporabimo trojni enačaj)
- $objekt1 !== $objekt2 — objekta nista istega tipa ali pa nimata iste vrednosti
Združevanje pogojev
Poljubno število pogojev lahko združimo z naslednjimi oznakami:- AND oz. && — vsi pogoji morajo biti hkrati resnični, da je resnična celota
Primer: $a > 5 AND $a < 10 — število $a je med 5 in 10
Primer: $a > 5 && $a < 10 — krajši zapis istih dveh pogojev - OR oz. || — vsaj en pogoj mora biti resničen, da je resnična celota
Primer: $ime == "Janez" OR $ime == "Marko" OR $ime == "Anže" — niz v spremenljivki $ime je lahko "Janez", "Marko" ali "Anže"
Primer: $ime == "Janez" || $ime == "Marko" || $ime == "Anže" — krajši zapis
Pogojni stavek switch
Ta stavek je v bistvu nadomestek strukture else if. Z njim primerjamo vrednost neke spremenljivke in v različnih primerih izvedemo različno kodo. Posplošen primer:switch (spremenljivka) {
case vrednost1:
// koda, ki se izvrši, če je vrednost spremenljivke enaka vrednost1
break;
case vrednost2:
// koda, ki se izvrši, če je vrednost spremenljivke enaka vrednost2
break;
// ...
case vrednostN:
// koda, ki se izvrši, če je vrednost spremenljivke enaka vrednostN
break;
default:
/* koda, ki se izvrši, če vrednost spremenljivke ni
enaka vrednost1, vrednost2, ... , vrednostN */
}
V glavi stavka switch navedemo spremenljivko, katere vrednost želimo primerjati z našim seznamom pričakovanih vrednosti. Znotraj samega stavka switch pa navedemo poljubno število elementov case, kjer navedemo možne (pričakovane) vrednosti spremenljivke.
Za dvopičji (:) pride koda, ki naj se izvrši v posameznem primeru. Za vsakim elementom case pride še ukaz break, s katerim izstopimo iz izvajanja kode v stavku switch.
Poseben ukaz je še default, ki igra enako vlogo kot else v stavku if — koda, ki je napisana znotraj bloka default, se izvrši le v primeru, ko so vsi prejšnji kriteriji odpovedali. Ta blok kode lahko sicer tudi izpustimo.
Super — zdaj ste se spoznali s pravim programiranjem!
V naslednjem poglavju (o zankah) pa si bomo ogledali številne praktične primere...