Данные операторы предназначены для установки или снятия групп битов целочисленной переменной. Ведь любое число - это просто последовательность бит. Целые числа в PHP - 32-битные.
Для представления одного числа используются 32 бита:
- 0000 0000 0000 0000 0000 0000 0000 0000 - это ноль;
- 0000 0000 0000 0000 0000 0000 0000 0001 - это 1;
- 0000 0000 0000 0000 0000 0000 0000 0010 - это 2;
- 0000 0000 0000 0000 0000 0000 0000 0011 - это 3;
- 0000 0000 0000 0000 0000 0000 0000 0100 - это 4;
- 0000 0000 0000 0000 0000 0000 0000 0101 - это 5;
- ...
- 0000 0000 0000 0000 0000 0000 0000 1111 - это 15;
- ...
Побитовые операторы:
Пример | Название | Результат |
$a & $b | Побитовое 'и' | Устанавливаются только те биты, которые установлены и в $a, и в $b. |
$a | $b | Побитовое 'или' | Устанавливаются те биты, которые установлены либо в $a, либо в $b. |
$a ^ $b | Исключающее или | Устанавливаются только те биты, которые установлены либо только в $a, либо только в $b |
~ $a | Отрицание | Устанавливаются те биты, которые в $a не установлены, и наоборот. |
$a << $b | Сдвиг влево | Все биты переменной $a сдвигаються на $b позиций влево (каждая позиция подразумевает 'умножение на 2') |
$a >> $b | Сдвиг вправо | Все биты переменной $a сдвигаються на $b позиций вправо (каждая позиция подразумевает 'деление на 2') |
Что за “разные операции”???
13. Приоритет выполения операторов и ассоциативность.
Https://puzzleweb.ru/php/12_operators.php
Приоритет оператора определяет порядок исполнения операций при вычислении значения выражения.
Операторы с одинаковым приоритетом обрабатываются в порядке следования в выражении. Например, операции умножения и деления исполняются в том порядке, в котором следуют в выражении, потому что они имеют одинаковый приоритет.
Если выражение содержит операторы с разным приоритетом, то порядок их исполнения может влиять на конечный результат выражения. С помощью круглых скобок (и) можно переопределить порядок исполнения операторов или просто улучшить читаемость выражения.
<?php echo 3 * 2 + 5; // выведет 11 echo 3 * (2 + 5); // выведет 21 ?> |
Приоритеты операторов PHP
Операторы с более высоким уровнем приоритета выполняются в первую очередь:
Приоритет | Оператор | Порядок выполнения |
(постфикс)++ (постфикс)-- | слева направо | |
++(префикс) --(префикс) | справа налево | |
* / % | слева направо | |
+ - | слева направо | |
<< >> | слева направо | |
< <= > >= | слева направо | |
==!= | слева направо | |
& | слева направо | |
^ | слева направо | |
| | слева направо | |
&& | слева направо | |
|| | слева направо | |
= += -= *= /= %= >>= <<== &= ^= |= | справа налево |
В любом случае, если вы сомневаетесь, или боитесь ошибиться, используйте скобки.
Https://puzzleweb.ru/php/12_operators.php
Ассоциативность
Все операторы обрабатывают свои операнды в определенном направлении. Направление обработки называется ассоциативностью и зависит от типа оператора. Большинство операторов выполняет обработку слева направо - такой порядок называется левой ассоциативностью. Левая ассоциативность подразумевает, что выражение вычисляется слева направо, правая ассоциативность - в обратном направлении.
Таблица операторов
В PHP есть несколько уровней приоритетов, в таблице приведен перечень операторов, отсортированных по уровню приоритета, от высшего к низшему. Операторы на одном уровне имеют одинаковый приоритет.
В колонке "Ассоциативность" помечены операторы, которые имеют правую ассоциативность, остальные относятся к левой.
Оператор | Описание | Ассоциативность |
NEW | Создает новый объект | Справа налево |
. [] () | Доступ к свойству (точечная нотация) Индекс массива Вызов функции | |
! ~ ++, -- +, - (int) (float/double/real) (string) (array) (object) @ | Логическое НЕ Битовое НЕ Операторы инкремента и декремента Унарный плюс и минус Оператор приведения типа Оператор приведения типа Оператор приведения типа Оператор приведения типа Оператор приведения типа Подавление вывода сообщений об ошибках | Справа налево |
*, /, % | Умножение, деление | |
+, -. | Сложение, вычитание Конкатенация | |
<<, >> | Битовый сдвиг | |
<, <=, >, >= | Операторы сравнения | |
==,!= ===,!==, <> | Операторы сравнения | |
& | Битовое И | |
ˆ | Битовое ИЛИ-НЕ | |
| | Битовое ИЛИ | |
&& | Логическое И | |
|| | Логическое ИЛИ | |
?: | Условный (тернарный) оператор | |
=, +=, -=, *=, /=,.=, %=, &=, |=, ^=, <<=, >>=, => | Операторы присваивания | Справа налево |
AND | Логическое И | |
XOR | Логическое ИЛИ-НЕ | |
OR | Логическое ИЛИ | |
, | Оператор запятая |
14. Условный оператор if...else. Условный оператор switch.
https://www.php.su/learnphp/cs/?co
https://www.php.su/learnphp/cs/?sc
15. Цикл while. Цикл for
https://www.php.su/learnphp/cs/?cycles#while
https://www.php.su/learnphp/cs/?cycles#for
16.Понятие простой и сложный инструкции.
Основные инструкции (или управляющие конструкции - англ. control structure) PHP очень похожи на соответствующие конструкции в ряде других алгоритмических языков. Простыми инструкциями являются операторы присваивания, вызовы методов объектов, операторы инкремента и декремента и т.д. Как и других языках программирования, в PHP можно объединять последовательности инструкций в блоки, получая составную инструкцию. Для этого последовательность инструкций заключается в фигурные скобки. В дальнейшем под инструкцией понимается простая либо составная инструкция.
17. Понятие области видимости и время деление переменных(оператор global).
https://php.net/manual/ru/language.variables.scope.php
https://www.php.su/learnphp/vars/?localvars
https://www.php.su/learnphp/vars/?glvars
18. Объявление функции. Функции, возращающие значение.
https://www.php.su/functions/custom/?1
https://php.net/manual/ru/functions.returning-values.php
19. Передача аргументов и функцию. Вложенные функции и рекурсия.
https://www.php.su/functions/custom/?2
20. Стандартные функции PHP(обзор)
Функциональную основу PHP представляют функции PHP. Обычно функции PHP подразделяют на "стандартные функции" и функции расширений. Стандартные функции составляют "функциональный фундамент" PHP, поскольку являются частью самого языка PHP. Ниже представлен перечень категорий стандартных функций PHP, в соответствующих категориях Вы найдете описания конкретных интересующих Вас функций.
https://www.php.su/functions/
https://www.php.su/functions/?page=standard
21. Структура массива. Объявление и инициализация массивов.
https://www.php.su/learnphp/datatypes/?array
https://php.net/manual/ru/language.types.array.php
22. Обход массивов в цикле.
https://php.net/manual/ru/control-structures.foreach.php
23. Массивы, индексируемые строками(ассоциативные массивы)