Stavek if...else uporabljamo, kadar želimo glede na izpolnjenost pogoja izvesti enega izmed dveh blokov kode. Če je pogoj resničen, se izvede prvi blok, sicer pa drugi.
Osnovna pravila
- Za besedo
ifv oklepajih zapišemo pogoj. - Če je pogoj resničen (
true), se izvede prvi blok kode. - Če pogoj ni resničen (
false), se izvede blok zaelse. - Bloka kode običajno zapišemo v zavitih oklepajih, saj je tako zapis preglednejši in varnejši.
Splošna oblika stavka if...else je:
if (pogoj) {
// koda, ki se izvede, če je pogoj resničen
} else {
// koda, ki se izvede, če pogoj ni resničen
}
Pomni: Stavek if...else vedno omogoča dve možnosti izvajanja: eno za primer, ko pogoj velja, in drugo za primer, ko pogoj ne velja.
Primer 1: pogoj je izpolnjen
<?php
$stevilo = 3;
if ($stevilo === 3) {
echo "Pogoj je izpolnjen.<br>";
} else {
echo "Pogoj ni izpolnjen.<br>";
}
?>
Primer 2: pogoj ni izpolnjen
<?php
$stevilo = 123;
if ($stevilo === 3) {
echo "Pogoj je izpolnjen.<br>";
} else {
echo "Pogoj ni izpolnjen.<br>";
}
?>
Primerjava zapisov
Poleg stavka if...else PHP omogoča tudi krajši zapis pogoja, ki ga imenujemo pogojni izraz ali ternarni operator. Zapišemo ga z operatorjema ? in :.
Splošna oblika je:
(pogoj) ? vrednost_če_je_pogoj_resničen : vrednost_če_pogoj_ni_resničen
Če je pogoj resničen, se uporabi izraz za znakom ?. Če pogoj ni resničen, se uporabi izraz za znakom :.
Krajši zapis s ternarnim operatorjem
<?php
$tocke = 78;
$rezultat = ($tocke >= 50) ? "uspešno" : "neuspešno";
echo "Preizkus je bil " . $rezultat . ".";
?>
Enak primer s stavkom if...else
<?php
$tocke = 78;
if ($tocke >= 50) {
$rezultat = "uspešno";
} else {
$rezultat = "neuspešno";
}
echo "Preizkus je bil " . $rezultat . ".";
?>
Oba zapisa sta pravilna, vendar imata nekoliko drugačen namen:
if...elseje primernejši za daljše, bolj razložene ali bolj zapletene pogoje,- ternarni operator je primeren za kratke in preproste odločitve.
Pozor: Če je pogoj daljši ali vsebuje več izrazov, je uporaba ternarnega operatorja lahko manj pregledna. V takem primeru je primerneje uporabiti stavek if...else.
Operator ?? in privzeta vrednost
V sodobnem PHP se pogosto uporablja tudi operator ??, ki mu pravimo operator ničelnega združevanja. Uporabimo ga, kadar želimo določiti privzeto vrednost.
Če leva vrednost obstaja in ni null, se uporabi ona. Sicer se uporabi desna vrednost. Operator ?? je zato priročen pri delu z neobveznimi podatki.
<?php
$ime = $vnos ?? "Gost";
echo $ime;
?>
Pomen zapisa:
- če
$vnosobstaja in ninull, dobi$imenjegovo vrednost, - sicer dobi
$imevrednost"Gost".
Priporočila
- Za primerjanje vrednosti je priporočljivo uporabljati operator
===, saj primerja tako vrednost kot podatkovni tip. - Pri zapisovanju pogojev uporabljajmo jasne in pregledne izraze.
- Pri krajših dodelitvah lahko uporabimo ternarni operator, vendar le, če zapis ostane razumljiv.
- Pri uporabi operatorja
??je priporočljivo dodati oklepaje, kadar ga kombiniramo z drugimi operatorji.
Pomni: Operator ?? ne preverja, ali je vrednost prazna, temveč ali spremenljivka obstaja in ali ni null.
Pogoste napake
- Namesto operatorja za primerjanje
==ali===je pomotoma uporabljen operator za prirejanje=. - Pri primerjanju se uporablja
==, čeprav bi bil zaradi večje natančnosti primernejši===. - Ternarni operator je uporabljen v predolgih ali preveč zapletenih izrazih, zaradi česar je koda manj pregledna.
- Operator
??se uporablja brez razumevanja, da preverja le obstoj in vrednostnull, ne pa tudi praznega niza ali števila0. - Pri kombiniranju operatorja
??z drugimi operatorji niso uporabljeni oklepaji, zato lahko nastane nejasen ali napačen rezultat.
Pozor: Pri pogojih je pomembna ne le pravilnost zapisa, temveč tudi njegova jasnost. Pregledna koda omogoča lažje razumevanje, preverjanje in vzdrževanje programa.