#2. 4 php Приоритет операторов, порядок выполнения

При использовании нескольких операторов совместно в одном выражении возникает вопрос — в каком порядке они будут выполнены? Например, пусть имеется следующий фрагмент кода:

<?php
echo 4+2*9;
?>

Его результат будет зависеть от того, какой из двух операторов выполнится первым — сложение или умножение. В данном случае результат будет равен 22, так как первым выполнится оператор умножения, потому что умножение имеет более высокий приоритет по сравнению со сложением. В таблице 1 приведены операторы по убыванию приоритета. Операторы с одним приоритетом выполняются по порядку слева направо.

Таблица 1. Операторы в порядке убывания приоритета

Оператор Описание
new создание экземпляра класса
** возведение в степень
+ - ~ ++ -- (int) (float) (string) (array) (object) (bool) @ унарные «плюс» и «минус», побитовая инверсия, инкремент/декремент, операторы преобразования типов, оператор управления ошибками
instance of оператор проверки типа
! логическое отрицание
* / % умножение, деление, остаток от деления
+ - . сложение, вычитание, оператор конкатенации строк (до php 8.0.0)
<< >> побитовый сдвиг влево/вправо
. оператор конкатенации строк (начиная с php 8.0.0)
< <= > >= операторы сравнения: меньше, меньше или равно, больше, больше или равно
== != <> === !== <=> операторы сравнения: равно, не равно, тождественно равно, тождественно не равно, spaceship
& побитовое И, передача значения по ссылке
^ побитовое исключающее или
| побитовое ИЛИ
&& логическое И
|| логическое ИЛИ
?? оператор объединения с null
? : тренарный оператор
= += -= *= /= .= %= &= операторы присваивания
yield from возврат значения из внутреннего генератора
yeild возврат из функции (генератора) с сохранением текущего итерационного состояния этой функции
print вывод строки
and логическое И
xor исключающее или
or логическое ИЛИ

Для изменения порядка выполнения операторов используются скобки. Пример ниже демонстрирует использование скобок для получения различного порядка выполнения арифметических операторов и, как следствие, для получения различного результата.

Пример 1. Управление порядком выполнения операторов.

<HTML>
  <HEAD>
    <TITLE>Управление порядком выполнения операторов</TITLE>
  </HEAD>
    <BODY>
      <H1>Управление порядком <BR> выполнения операторов</H1>
      <?php
        echo "4+2*9= ", 4+2*9, "<BR>";
        echo "(4 + 2) * 9 = " , (4 + 2) * 9, "<BR>";
        echo "4+(2*9) =", 4+(2*9), "<BR>";
      ?>
    </BODY>
</HTML>

На рисунке ниже приведен результат вычислений выражения с различным порядком выполнения арифметических операторов.



Управление порядком выполнения операторов

Key Words for FKN + antitotal forum (CS VSU):

vedro-compota's picture

Предлагаю добавить к таблице приоритета комменты со значением операторов (там где их несколько можно через слэш /)

или может найти (в других главах)/сделать вообще где-то список операторов и там их просто по одному перечислить с описанием, а отсюда дать ссылку?

_____________
матфак вгу и остальная классика =)