Пріоритети операторів PHP

Матеріал з Вікі ЦДУ
Версія від 14:00, 19 квітня 2010; Bobchik (обговореннявнесок)

(різн.) ← Попередня версія • Поточна версія (різн.) • Новіша версія → (різн.)
Перейти до: навігація, пошук

Пріоритет операторів визначає, наскільки "тісно" пов'язані між собою два вирази. Наприклад, вираз 1 + 5 * 3 обчислюється як 16, а не 18, оскільки операція множення ("*") має більш високий пріоритет, ніж операція додавання ("+"). У випадку, якщо оператори мають однаковий пріоритет, вони будуть виконуватися зліва направо. Круглі дужки можуть використовуватися для примусового вказівки необхідного порядку виконання операторів. Наприклад, вираз (1 + 5) * 3 обчислюється як 18.

У наступній таблиці наведено список операторів, відсортований за спаданням їхніх пріоритетів. Оператори, розміщені в одному рядку мають однаковий пріоритет і порядок їх виконання опроделяется виходячи з їх асоціативності.

Оператори з більш високим рівнем пріоритету виконуються в першу чергу:

Приоритет
Оператор
Порядок выполнения
13
(постфикс)++ (постфикс)--
слева направо
12
++(префикс) --(префикс)
справа налево
11
* / %
слева направо
10
+ -
слева направо
9
<< >>
слева направо
8
< <= > >=
слева направо
7
== !=
слева направо
6
&
слева направо
5
^
слева направо
4
|
слева направо
3
&&
слева направо
2
||
слева направо
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 
?>

У будь-якому випадку, якщо ви сумніваєтеся, чи боїтеся помилитися, використовуйте круглі дужки. Це також дозволить зробити ваш код більш читабельним.