Оператори
PHP Manual

Приоритет на операторите

Приоритетът на операторите описва колко "плътно" даден оператор свързва два израза. Например, в израза 1 + 5 * 3 отговорът е 16, а не 18, защото операторът за умножение ("*") има по-висок приоритет от оператора за събиране ("+"). Ако е необходимо, могат да бъдат използвани скоби, за да се укаже изрично приоритет. Например: (1 + 5) * 3 се изчислява на 18. Ако два оператора имат еднакъв приоритет се използва асоциативност отляво надясно.

Следната таблица описва приоритета на операторите, като операторите с най-висок приоритет са най-отгоре. Операторите на един и същи ред имат еднакъв приоритет, в който случай редът им на изчисление зависи от съответната им асоциативност.

Приоритет на операторите
Асоциативност Оператори Допълнителна информация
без асоциативност clone new clone и new
лява [ array()
без асоциативност ++ -- инкрементиране/декрементиране
без асоциативност ~ - (int) (float) (string) (array) (object) (bool) @ типове
без асоциативност instanceof типове
дясна ! логически
лява * / % аритметични
лява + - . аритметични и низови
лява << >> побитови
без асоциативност < <= > >= <> сравнителни
без асоциативност == != === !== сравнителни
лява & побитови и референции
лява ^ побитови
лява | побитови
лява && логически
лява || логически
лява ? : третични
дясна = += -= *= /= .= %= &= |= ^= <<= >>= присвоителни
лява and логически
лява xor логически
лява or логически
лява , множество употреби

Лява асоциативност означава, че изразът се изчислява отляво надясно, дясна асоциативност - обратното.

Example #1 Асоциативност

<?php
$a 
5// (3 * 3) % 5 = 4
$a true true 2// (true ? 0 : true) ? 1 : 2 = 2

$a 1;
$b 2;
$a $b += 3// $a = ($b += 3) -> $a = 5, $b = 5
?>

Използвайте скоби, за да увеличите прегледността на кода.

Забележка: Въпреки че = има по-нисък приоритет от повечето останали оператори, PHP позволява изрази като този: if (!$a = foo()), в който случай изходът на foo() се присвоява на $a.


Оператори
PHP Manual