Обработка выражений рассматривалась нами слева направо, за исключением тех случаев, в которых вступала в силу приоритетность операторов. Но некоторые операторы могут также потребовать обработки справа налево. Направление обработки обусловливается взаимосвязанностью операторов.
Взаимосвязанность приобретает большое значение в тех случаях, когда вы явным образом не меняете приоритетности. В таблице перечислены все операторы, имеющие взаимосвязанность справа налево.
Оператор | Описание |
---|---|
NEW | Создание нового объекта |
! | Логическое НЕ |
~ | Поразрядное НЕ |
++ -- | Инкремент и декремент |
+ - | Унарный плюс и изменение знака числа |
(int) | Преобразование в целое число |
(double) | Преобразование в число с плавающей точкой |
(string) | Преобразование в строковое значение |
(array) | Преобразование в массив |
(object) | Преобразование в объект |
@ | Подавление сообщения об ошибке |
? : | Условный оператор |
= | Присваивание |
Рассмотрим оператор присваивания, показанный в примере, где всем трем переменным присваивается значение 0.
Пример. Оператор множественного присваивания
<?php
$level = $score = $time = 0;
?>
Такое множественное присваивание возможно только в том случае, если сначала вычисляется самая правая часть выражения, а затем процесс продолжается справа налево.
Новичкам следует научиться в процессе работы с РНР избегать потенциальных просчетов в вопросах взаимосвязанности операторов и всегда принудительно задавать порядок вычислений, заключая подвыражения в круглые скобки. Это поможет и другим программистам, вынужденным обслуживать ваш код, понять, что в нем происходит.
Приоритетность операторов | Операторы отношения |