#2. 4 php Приоритет операторов, порядок выполнения
Primary tabs
При использовании нескольких операторов совместно в одном выражении возникает вопрос — в каком порядке они будут выполнены? Например, пусть имеется следующий фрагмент кода:
<?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>
На рисунке ниже приведен результат вычислений выражения с различным порядком выполнения арифметических операторов.
- Log in to post comments
- 601 reads
vedro-compota
Thu, 08/24/2023 - 16:57
Permalink
Предлагаю добавить к таблице
Предлагаю добавить к таблице приоритета комменты со значением операторов (там где их несколько можно через слэш /)
или может найти (в других главах)/сделать вообще где-то список операторов и там их просто по одному перечислить с описанием, а отсюда дать ссылку?
_____________
матфак вгу и остальная классика =)