İşleç önceliği iki ifadenin birbirine hangi sıkılıkta bağlı olduğunu belirtir. Örneğin, 1 + 5 * 3 ifadesinin sonucu 18 değil, 16'dır. Çünkü, çarpma ("*") işlecinin önceliği toplama ("+") işlecinden yüksektir. Önceliği arttırmak için gerekirse parantezler kullanılabilir. Örneğin, (1 + 5) * 3 ifadesinin sonucu 18 olacaktır. Eğer işleç önceliklerinde eşitlik sözkonusu olursa soldaki işleç sağdakinden öncelikli olur.
Aşağıdaki listede işleçler en yüksek öncelikliden başlayıp en düşük öncelikliye doğru sıralanmışlardır. Aynı satırda yer alan işleçler eşöncelikli olup hangi sırada ele alınacaklarına değerlendirme sırasında karar verilir.
İlişkilendirme | İşleçler | Ek bilgi |
---|---|---|
yönsüz | clone new |
clone ve new |
soldan | [ |
array() |
yönsüz | ++ -- |
arttırım/eksiltim |
sağdan | ~ - (int) (float) (string) (array) (object)
(bool) @ |
Türler |
yönsüz | instanceof |
Türler |
sağdan | ! |
mantıksal |
soldan | * / % |
aritmetik |
soldan | + - . |
aritmetik ve dizge |
soldan | << >> |
bitsel |
yönsüz | < <= > >= <> |
karşılaştırma |
yönsüz | == != === !== |
karşılaştırma |
left | & |
bitsel ve gönderimler |
soldan | ^ |
bitsel |
soldan | | |
bitsel |
soldan | && |
mantıksal |
soldan | || |
mantıksal |
soldan | ? : |
üç terimli |
sağdan |
= += -= *= /= .= %= &= |= ^= <<= >>= =>
|
atama |
soldan | and |
mantıksal |
soldan | xor |
mantıksal |
soldan | or |
mantıksal |
soldan | , |
birçok kullanım |
Soldan ilişkilendirme, ifadenin soldan sağa, sağdan ilişkilendirme ise sağdan sola değerlendirileceği anlamına gelir.
Örnek 1 - Öncelik yönü
<?php
$a = 3 * 3 % 5; // (3 * 3) % 5 = 4
$a = true ? 0 : true ? 1 : 2; // (true ? 0 : true) ? 1 : 2 = 2
$a = 1;
$b = 2;
$a = $b += 3; // $a = ($b += 3) -> $a = 5, $b = 5
?>
Bilginize:
Eşitlik (=) işleci çoğu işleçten daha düşük önceliğe sahip olduğundan PHP halen şuna benzer ifadelere izin vermektedir: foo() işlevinin dönüş değerini $a değişkenine atayan if (!$a = foo()) ifadesi.