11. Fejezet. Operátorok

Tartalom
Operátorok precedenciája
Aritmetikai operátorok
Hozzárendelő operátorok
Bitorientált operátorok
Összehasonlító operátorok
Hibakezelő operátorok
Végrehajtó operátorok
Növelő/csökkentő operátorok
Logikai operátorok
String operátorok
Tömb operátorok

Operátorok precedenciája

Az operátorok precedenciája azt határozza meg, hogy milyen "szorosan" köt össze két kifejezést. Például az 1 + 5 * 3 kifejezésben, a kifejezés értéke 16, és nem 18, mert a szorzás operátorának, a ("*")-nak nagyobb precedenciája van, mint az összeadásénak ("+"). Zárójelek segítségével tetszőleges precedenciát lehet felállítani egy kifejezésen belül, ha szükséges. Például a (1 + 5) * 3 eredménye 18 lesz.

[Az asszociativitás talán megér egy kis magyarázatot. Ez azt határozza meg, hogy az adott szinten levő operátorok egymás utáni, zárójel nélküli használatát hogyan értelmezi a fordító. Egy példán keresztül talán érthetőbbé válik: 1-2+3 értelmezhető (1-2)+3-nak (= 2), vagy 1-(2+3)-nak (= -4). Az előbbi kiértékelés, amely balról jobbra asszociatív, a helyes ebben az esetben. A második kiértékelés pedig jobbról balra asszociatív - ilyen lenne például a hatványozás, amely nincs a nyelvben implementálva (erre szolgál pow()). Ha a ** lenne a hatványozás, akkor a 2**3**2 helyesen 2 a 9-en = 512 lenne. Vannak nem köthető (nem asszociatív) operátorok is, ilyenek az összehasonlító operátorok. A PHP-ban tehát nem értelmes a 2<$x<4 kifejezés.]

Az alábbi táblázat az operátorokat precedenciájuk szerint növekvő sorrendben tartalmazza.

Táblázat 11-1. Operátorok precedenciája

asszociativitásoperátorok
balról jobbra,
balról jobbraor
balról jobbraxor
balról jobbraand
jobbról balraprint
balról jobbra= += -= *= /= .= %= &= |= ^= ~= <<= >>=
balról jobbra? :
balról jobbra||
balról jobbra&&
balról jobbra|
balról jobbra^
balról jobbra&
nem köthető== != === !==
nem köthető< <= > >=
balról jobbra<< >>
balról jobbra+ - .
balról jobbra* / %
jobbról balra! ~ ++ -- (int) (float) (string) (array) (object) @
jobbról balra[]
nem köthetőnew