Operatorji v PHP omogočajo prirejanje vrednosti, računanje, povezovanje nizov, primerjanje podatkov in sestavljanje logičnih pogojev. So temeljni gradniki izrazov, s katerimi program izvaja različne naloge.
Osnovna pravila
- Operator vedno deluje nad eno ali več vrednostmi oziroma izrazi.
- Različni operatorji imajo različen namen: nekateri računajo, drugi primerjajo, tretji prirejajo vrednosti ali sestavljajo pogoje.
- Pri daljših izrazih je treba paziti na prioriteto operatorjev.
- Če želimo zagotoviti jasen vrstni red izvajanja, uporabimo oklepaje.
Pomni: Enak zapis operatorja v različnih programskih jezikih ne pomeni vedno enakega obnašanja. Pri učenju PHP je zato pomembno poznati pomen operatorja in njegovo prioriteto.
Prireditveni operatorji
Osnovni prireditveni operator je =. Vrednost izraza na desni strani priredi spremenljivki na levi strani.
$ime = "Janez";
Pri tem znak = ne pomeni matematične enakosti, ampak prireditev vrednosti spremenljivki.
Pozor: Operator = ni operator za primerjanje. Za preverjanje enakosti uporabljamo operatorja == ali ===.
Aritmetični operatorji
Aritmetične operatorje uporabljamo za računanje s številskimi vrednostmi.
| Operator | Pomen | Primer | Rezultat |
|---|---|---|---|
+ |
seštevanje | 10 + 4 |
14 |
- |
odštevanje | 10 - 4 |
6 |
* |
množenje | 10 * 4 |
40 |
/ |
deljenje | 10 / 4 |
2.5 |
% |
ostanek pri deljenju | 10 % 4 |
2 |
<?php
$sestevanje = 2 + 4;
$odstevanje = 6 - 2;
$mnozenje = 5 * 3;
$deljenje = 15 / 3;
$ostanek = 5 % 2;
echo "Primer seštevanja: 2 + 4 = " . $sestevanje . "<br>";
echo "Primer odštevanja: 6 - 2 = " . $odstevanje . "<br>";
echo "Primer množenja: 5 * 3 = " . $mnozenje . "<br>";
echo "Primer deljenja: 15 / 3 = " . $deljenje . "<br>";
echo "Primer ostanka pri deljenju: 5 % 2 = " . $ostanek;
?>
Primer odštevanja: 6 - 2 = 4
Primer množenja: 5 * 3 = 15
Primer deljenja: 15 / 3 = 5
Primer ostanka pri deljenju: 5 % 2 = 1
Povezovalni operatorji
Za povezovanje nizov uporabljamo operator .. Z njim združimo besedilo ali vrednosti v en sam niz.
<?php
$prviNiz = "Pozdravljen";
$drugiNiz = " ";
$tretjiNiz = "Miha";
$novNiz = $prviNiz . $drugiNiz . $tretjiNiz;
echo $novNiz . "!";
?>
Pozor: Pri sodobnem PHP je priporočljivo uporabljati oklepaje, kadar v istem izrazu mešamo operator . z operatorjema + ali -, saj lahko brez oklepajev nastane nejasen ali nepričakovan rezultat.
Kombinirani prireditveni operatorji
Kombinirani prireditveni operatorji združujejo prireditev z drugo operacijo. Namesto daljšega zapisa lahko uporabimo krajšo obliko.
$x = 4;
$x += 4; // $x dobi vrednost 8
$x = 4;
$x = $x + 4; // enakovreden daljši zapis
Nekaj najpogostejših kombiniranih prireditvenih operatorjev:
| Operator | Primer | Enakovreden zapis |
|---|---|---|
+= |
$x += 5 |
$x = $x + 5 |
-= |
$x -= 5 |
$x = $x - 5 |
*= |
$x *= 5 |
$x = $x * 5 |
/= |
$x /= 5 |
$x = $x / 5 |
%= |
$x %= 5 |
$x = $x % 5 |
.= |
$x .= "test" |
$x = $x . "test" |
Inkrementni in dekrementni operatorji
Operatorja ++ in -- povečata ali zmanjšata vrednost spremenljivke za 1.
<?php
$x = 4;
echo "Vrednost x pri poinkrementu = " . $x++;
echo "<br>Vrednost x po izvedenem poinkrementu = " . $x;
$x = 4;
echo "<br>Vrednost x pri predinkrementu = " . ++$x;
echo "<br>Vrednost x po izvedenem predinkrementu = " . $x;
?>
Vrednost x po izvedenem poinkrementu = 5
Vrednost x pri predinkrementu = 5
Vrednost x po izvedenem predinkrementu = 5
Primerjalni operatorji
Primerjalni operatorji primerjajo dve vrednosti. Rezultat primerjave je logična vrednost true ali false. Pogosto jih uporabljamo v stavkih if in zankah while.
$x < 5
| Operator | Pomen | Vrne true, če |
Primer |
|---|---|---|---|
== |
enakost po vrednosti | sta vrednosti enaki | $x == 5 |
!= |
neenakost | vrednosti nista enaki | $x != 5 |
=== |
identičnost | sta vrednost in tip enaka | $x === 5 |
!== |
neidentičnost | vrednost ali tip nista enaka | $x !== 5 |
> |
večji kot | je leva stran večja od desne | $x > 4 |
>= |
večji ali enak | je leva stran večja ali enaka desni | $x >= 4 |
< |
manjši kot | je leva stran manjša od desne | $x < 4 |
<= |
manjši ali enak | je leva stran manjša ali enaka desni | $x <= 4 |
<=> |
primerjalni operator | vrne -1, če je leva vrednost manjša od desne, 0, če sta vrednosti enaki, ali 1, če je leva vrednost večja od desne |
$a <=> $b |
Operator ?? uporabimo, kadar želimo določiti privzeto vrednost. Če leva vrednost obstaja in ni null, se uporabi ona. Sicer se uporabi desna vrednost.
<?php
$ime = $vnos ?? "Gost";
?>
Pomen zapisa:
- če
$vnosobstaja in ninull, dobi$imenjegovo vrednost, - sicer dobi
$imevrednost"Gost".
Logični operatorji
Logične operatorje uporabljamo za sestavljanje zahtevnejših pogojev.
| Operator | Pomen | Vrne true, če |
Primer |
|---|---|---|---|
|| |
ali | je vsaj en operand resničen | true || false |
or |
ali | je vsaj en operand resničen | true or false |
&& |
in | sta oba operanda resnična | true && false |
and |
in | sta oba operanda resnična | true and false |
xor |
izključujoči ali | je natanko eden operand resničen | true xor false |
! |
ne | operand ni resničen | !true |
Primerjave
Pri uporabi operatorjev je pomembno razlikovati med podobnimi zapisi, ki pa imajo različen pomen.
=prireja vrednost, medtem ko==preverja enakost po vrednosti.==primerja le vrednost, medtem ko===primerja vrednost in tip podatka.++$xnajprej poveča vrednost in nato vrne rezultat, medtem ko$x++najprej vrne trenutno vrednost in jo šele nato poveča.&&inandpomenita logični in, vendar nimata enake prioritete.||inorpomenita logični ali, vendar prav tako nimata enake prioritete.
Pomni: Med operatorjema == in === je pomembna razlika. V učnih primerih in pri resničnih programih je pogosto primernejša uporaba operatorja ===.
Priporočila
- Pri primerjanju uporabimo
===, kadar želimo natančno preveriti tudi tip podatka. - Pri daljših izrazih uporabljajmo oklepaje, da je vrstni red izvajanja jasen.
- Pri povezovanju nizov in drugih operacij v istem izrazu poskrbimo za preglednost zapisa.
- Kombinirane prireditvene operatorje uporabljajmo tam, kjer prispevajo k jasnejši kodi.
- Pri logičnih operatorjih je priporočljivo dobro poznati prioriteto operatorjev ali pa uporabiti oklepaje.
Pogoste napake
- Namesto operatorja za primerjanje je uporabljen prireditveni operator
=. - Pri primerjanju se uporablja
==, čeprav bi bil zaradi večje natančnosti primernejši===. - Pri mešanju operatorjev brez oklepajev nastane nejasen ali napačen rezultat.
- Razlika med predinkrementom in poinkrementom ni upoštevana, zato rezultat ni pričakovan.
- Logični operatorji
and,or,&&in||so uporabljeni brez upoštevanja različne prioritete. - Operator
??se uporablja brez razumevanja, da preverja obstoj in vrednostnull, ne pa splošne “praznosti” vrednosti.
Pozor: Pri operatorjih ni pomemben le njihov pomen, temveč tudi vrstni red izvajanja. Napačno razumevanje prioritete operatorjev je pogost vzrok za težje opazne napake.