Vannak mr vltozink, amiket eddig egyszeren kirtunk. A vltozkkal szmtalan mveletet vgezhetnk, ehhez azonban megfelel mveleti jelekre van szksgnk. Ezeket a mveleti jeleket hvjuk opertoroknak, az elemeket, amikkel a mveletet vgezzk operandusoknak, magt a mveletet pedig kifejezsnek:
Az elvgezhet mveleteket tbb csoportba sorolhatjuk:
<?php
$a_szam = 5;
$b_szam = 7;
$c_szam = $a_szam + $b_szam; // ez az egsz egy kifejezsprint ($c_szam); // kirja 5 s 7 sszegt
?>
A string opertorokkal karaktersorokat illeszthetnk ssze. A karaktersor lehet egy vltoz, vagy lland tartalma, vagy akr kzvetlenl egy idzjelekkel meghatrozott szvegbeilleszts. Karaktersorokat sszefzhetnk a . (pont) opertorral, illetve ltez karaktersorhoz rvidebb rsmddal is hozzfzhetnk tovbbi karaktersort a .= opertorral.
nv
opertor
plda
megfelelje
sszefzs
.
$a . $b
hozzfzs
.=
$a .= $b
$a = $a . $b
Plda string opertorra:
<?php
$a = "Kiss ";
$b = "Bla ";
$c = $a . $b; // $c rtke: Kiss Bla
$c .= " kalaplenget"; // $c rtke: Kiss Bla kalaplenget
?>
Egy rtket rendeltnk az $a_szam vltozhoz. Mindig a bal oldali operandus (ami az egyenlsgjel bal oldaln ll) kapja a jobb oldali kifejezst rtkl. Nem keverend ssze a == jellel, amivel kt operandus azonossgt vizsgljuk. Kiss bonyolultabb, de gyakran hasznlt formi:
Az sszehasonlt opertorok a kt oldalon lev rtkeket hasonltjk ssze s logikai igaz (TRUE), vagy hamis (FALSE) rtket adhatnak.
nv
opertor
igaz, ha
egyenl
==
kt rtk megegyez
nem egyenl
!=
kt rtk klnbz
azonos
===
az rtkek s a tpusok is egyeznek
nem azonos
!==
az rtkek s/vagy a tpusok klnbzek
nagyobb
>
bal oldal nagyobb a jobb oldalnl
nagyobb, vagy egyenl
>=
a bal oldal nagyobb, vagy egyenl a jobb oldallal
kisebb
<
bal oldal kisebb a jobb oldalnl
kisebb, vagy egyenl
<=
a bal oldal kisebb, vagy egyenl a jobb oldallal
Jl rzkelhet a lnyeges klnbsg az == s a === opertor kztt, ha a 12 s a "12" rtkeket vizsgljuk. Ezek egyenlk, de nem azonosak, mivel az egyik integer, a msik string tpus (idzjelek kztt van).
A logikai opertorok logikai operandusokkal (boolean tpus vltozkkal) vgeznek mveleteket s az eredmnyk is egy logikai rtk lesz. Pldul TRUE || FALSE eredmnye TRUE, azaz igaz vagy hamis eredmnye mindig igaz. Lssunk gyorsan egy igazsgtblt a logikai opertorokra.
S logikai kapcsolat
x
y
eredmny
FALSE
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
TRUE
FALSE
TRUE
TRUE
TRUE
A kimenet igaz, ha minden bemenet igaz.
VAGY logikai kapcsolat
x
y
eredmny
FALSE
FALSE
FALSE
TRUE
FALSE
TRUE
FALSE
TRUE
TRUE
TRUE
TRUE
TRUE
A kimenet igaz, ha legalbb egy bemenet igaz.
KIZR VAGY logikai kapcsolat
x
y
eredmny
FALSE
FALSE
TRUE
TRUE
FALSE
FALSE
FALSE
TRUE
FALSE
TRUE
TRUE
TRUE
A kimenet igaz, ha minden bemenet egyforma.
INVERZ logikai kapcsolat
x
eredmny
FALSE
TRUE
TRUE
FALSE
A kimenet mindig a bemenet fordtottja.
Na, ez szp sznesre sikerlt... s most lssuk a logikai opertorokat, vglis ezrt jttnk ide:
A PHP tmogatja a C-szer n. el- s utnvekmnyes ill. cskkent opertorokat. Ezek egy szmszer rtket nvelnek, illetve cskkentenek. Teht $a++; ugyanaz, mintha ezt rnnk: $a = $a + 1;
<?php
$a = 5;
$a++;
print ($a); // kirja, hogy 6
?>
nv
opertor
igaz, ha
elnvekmnyes
++$a
Nveli $a-t eggyel, majd visszaadja $a rtkt
utnvekmnyes
$a++
Visszaadja $a rtkt, majd nveli $a-t eggyel
elcskkent
--$a
Cskkenti $a-t eggyel, majd visszaadja $a rtkt
utcskkent
$a--
Visszaadja $a rtkt, majd cskkenti $a-t eggyel
Lthatjuk, a klnbsg a ktfle nvels, illetve cskkents kztt, hogy az rtk visszaadsa eltt, vagy utn vgzi-e el az rtk mdostst. Ennek a ciklusoknl lesz jelentsge.
Ha egy kifejezsben tbb mveletet kell vgrehajtani, a mveletek vgrehajtsi sorrendje (prioritsa) elre meghatrozott. Pldul az && mvelet elbb kerl vgrehajtsra, mint a ||. A vgrehajtsi sorrendet zrjelek hasznlatval ettl eltren is meghatrozhatjuk.
<?php
$a = 5 + 6 * 2; // ennek eredmnye 17// mert a szorzst az sszeads eltt hajtja vgre
$a = (5 + 6) * 2; // ennek eredmnye mr 22// mivel itt a zrjelekkel ms sorrendet rtuk el
?>
A PHP ms opertorokat is tmogat, itt csak a leggyakrabban hasznltakat trgyaltuk. A tovbbi opertorolkrl a PHP kziknyvben olvashatsz itt.