Vannak már változóink, amiket eddig egyszerűen kiírtunk. A változókkal számtalan műveletet végezhetünk, ehhez azonban megfelelő műveleti jelekre van szükségünk. Ezeket a műveleti jeleket hívjuk operátoroknak, az elemeket, amikkel a műveletet végezzük operandusoknak, magát a műveletet pedig kifejezésnek:
Az elvégezhető műveleteket több csoportba sorolhatjuk:
<?php
$a_szam = 5;
$b_szam = 7;
$c_szam = $a_szam + $b_szam; // ez az egész egy kifejezésprint ($c_szam); // kiírja 5 és 7 összegét
?>
A string operátorokkal karaktersorokat illeszthetünk össze. A karaktersor lehet egy változó, vagy állandó tartalma, vagy akár közvetlenül egy idézőjelekkel meghatározott szövegbeillesztés. Karaktersorokat összefűzhetünk a . (pont) operátorral, illetve létező karaktersorhoz rövidebb írásmóddal is hozzáfűzhetünk további karaktersort a .= operátorral.
név
operátor
példa
megfelelője
összefűzés
.
$a . $b
hozzáfűzés
.=
$a .= $b
$a = $a . $b
Példa string operátorra:
<?php
$a = "Kiss ";
$b = "Béla ";
$c = $a . $b; // $c értéke: Kiss Béla
$c .= " kalaplengető"; // $c értéke: Kiss Béla kalaplengető
?>
Egy értéket rendeltünk az $a_szam változóhoz. Mindig a bal oldali operandus (ami az egyenlőségjel bal oldalán áll) kapja a jobb oldali kifejezést értékül. Nem keverendő össze a == jellel, amivel két operandus azonosságát vizsgáljuk. Kissé bonyolultabb, de gyakran használt formái:
<?php
$a_szam = 3;
$a_szam += 5; // ugyanaz, mint $a_szam = $a_szam + 5, eredménye 8
$b_szam = 8;
$b_szam -= 5; // ugyanaz, mint $a_szam = $a_szam - 5, eredménye 3
$b_szam = 8;
$b_szam *= 5; // ugyanaz, mint $a_szam = $a_szam * 5, eredménye 40
?>
Az összehasonlító operátorok a két oldalon levő értékeket hasonlítják össze és logikai igaz (TRUE), vagy hamis (FALSE) értéket adhatnak.
név
operátor
igaz, ha
egyenlő
==
két érték megegyező
nem egyenlő
!=
két érték különböző
azonos
===
az értékek és a típusok is egyeznek
nem azonos
!==
az értékek és/vagy a típusok különbözőek
nagyobb
>
bal oldal nagyobb a jobb oldalnál
nagyobb, vagy egyenlő
>=
a bal oldal nagyobb, vagy egyenlő a jobb oldallal
kisebb
<
bal oldal kisebb a jobb oldalnál
kisebb, vagy egyenlő
<=
a bal oldal kisebb, vagy egyenlő a jobb oldallal
Jól érzékelhető a lényeges különbség az == és a === operátor között, ha a 12 és a "12" értékeket vizsgáljuk. Ezek egyenlők, de nem azonosak, mivel az egyik integer, a másik string típusú (idézőjelek között van).
A logikai operátorok logikai operandusokkal (boolean típusú változókkal) végeznek műveleteket és az eredményük is egy logikai érték lesz. Például TRUE || FALSE eredménye TRUE, azaz igaz vagy hamis eredménye mindig igaz. Lássunk gyorsan egy igazságtáblát a logikai operátorokra.
ÉS logikai kapcsolat
x
y
eredmény
FALSE
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
TRUE
FALSE
TRUE
TRUE
TRUE
A kimenet igaz, ha minden bemenet igaz.
VAGY logikai kapcsolat
x
y
eredmény
FALSE
FALSE
FALSE
TRUE
FALSE
TRUE
FALSE
TRUE
TRUE
TRUE
TRUE
TRUE
A kimenet igaz, ha legalább egy bemenet igaz.
KIZÁRÓ VAGY logikai kapcsolat
x
y
eredmény
FALSE
FALSE
TRUE
TRUE
FALSE
FALSE
FALSE
TRUE
FALSE
TRUE
TRUE
TRUE
A kimenet igaz, ha minden bemenet egyforma.
INVERZ logikai kapcsolat
x
eredmény
FALSE
TRUE
TRUE
FALSE
A kimenet mindig a bemenet fordítottja.
Na, ez szép színesre sikerült... És most lássuk a logikai operátorokat, végülis ezért jöttünk ide:
A PHP támogatja a C-szerű ún. elő- és utónövekményes ill. csökkentő operátorokat. Ezek egy számszerű értéket növelnek, illetve csökkentenek. Tehát $a++; ugyanaz, mintha ezt írnánk: $a = $a + 1;
Láthatjuk, a különbség a kétféle növelés, illetve csökkentés között, hogy az érték visszaadása előtt, vagy után végzi-e el az érték módosítását. Ennek a ciklusoknál lesz jelentősége.
Ha egy kifejezésben több műveletet kell végrehajtani, a műveletek végrehajtási sorrendje (prioritása) előre meghatározott. Például az && művelet előbb kerül végrehajtásra, mint a ||. A végrehajtási sorrendet zárójelek használatával ettől eltérően is meghatározhatjuk.
<?php
$a = 5 + 6 * 2; // ennek eredménye 17// mert a szorzást az összeadás előtt hajtja végre
$a = (5 + 6) * 2; // ennek eredménye már 22// mivel itt a zárójelekkel más sorrendet írtuk elő
?>
A PHP más operátorokat is támogat, itt csak a leggyakrabban használtakat tárgyaltuk. A további operátorolókról a PHP kézikönyvben olvashatsz itt.