Načrtovanje in razvoj spletnih aplikacij

Operatorji v PHP

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 seštevanja: 2 + 4 = 6
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 . "!";
?>
Pozdravljen Miha!

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 pri poinkrementu = 4
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 $vnos obstaja in ni null, dobi $ime njegovo vrednost,
  • sicer dobi $ime vrednost "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.
  • ++$x najprej poveča vrednost in nato vrne rezultat, medtem ko $x++ najprej vrne trenutno vrednost in jo šele nato poveča.
  • && in and pomenita logični in, vendar nimata enake prioritete.
  • || in or pomenita 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 vrednost null, 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.