Одно значение — унарные операторы
два значения — бинарный оператор
три значения — тернарные операторы
Арифметические операторы
+ - * /
% деление по модулю
** возведение в степень
// результат вычислений будет изменен на нужный тип данных
fdiv($x, $y); // безопасное деление если $y может быть равен 0, вернет float(INF)
fmod($x, $y); // деление по модулю % для floatОператоры присваивания
$x = 5; // база
$x = $y = 5; // так тоже можно
$x = ($y = 10) + 5; // $x = 15 $y = 10
//действия с орифметическими операторами можно сократить
$x += 5; // тоже самое что и $x = $x + 5;Строковые операторы
$x = 'Hello';
$x = $x . ' World!'; // конкатенация
$x .= ' World!'; // тоже самоеОператоры сравнения
== простое сравнение с преобразованием типов
=== строгое сравнение, где кроме значений должны совпадать и типы данных
! инверсия условия, к примеру $x != $y
<> проверка на неравенство
< > <= >= ну тут все понятно
$x <==> $y оператор сравнения 0 - если они равны, 1 если $x больше, -1 если $y больше
// ?: сокращенный вариант if, тернарный оператор
$result = $y === false ? 'Если выражение верно' : 'если ложно';
// ?? оператор объединения с нулевым результатом
$x = null;
$y = $x ?? 'hello'; // hello есди $x действительно null, иначе само значение $xОператор подавления ошибок
@ - Убирает вывод ошибки если она происходит, крайне сомнительная идея
$x = @file('foo.txt'); // и файла то нет, и ошибки не будетОператоры инкремента и декремента
++$a Префиксный инкремент Увеличивает $a на единицу, затем возвращает значение $a.
$a++ Постфиксный инкремент Возвращает значение $a, затем увеличивает $a на единицу.
--$a Префиксный декремент Уменьшает $a на единицу, затем возвращает значение $a.
$a-- Постфиксный декремент Возвращает значение $a, затем уменьшает $a на единицу.Логические операторы
&& // AND вернет true если оба выражения равны. Остановится на первом false
|| // OR вернет true если хоть что то равно true. Вычисления идут до первого true и останавливается
! // инверсия значения к примеру $x= false; то !$x будет true
// по приоритету && выше || и выполнятеся первым
// те же операторы можно использовать как AND OR XOR
// НО при они будут иметь меньший приоритет и выражение
$x = true; $z = false;
$z = $x and $y; // Вернет true так как сработает только часть $z = $x.
// при использовании && все было бы нормально ну или $z = ($x and $y);Побитовые операторы
| & | И | Устанавливаются биты, которые установили и в переменной $a, и в переменной $b. |
| | | ИЛИ | Устанавливаются биты, которые установили или в переменной $a, или в переменной $b. |
| ^ | Исключающее ИЛИ | Устанавливаются биты, которые установили либо только в переменной $a, либо только в переменной $b, но не в обоих одновременно. |
| ~ | Отрицание | Устанавливаются биты, которые не установили в переменной $a, и наоборот. |
| << | Сдвиг влево | Каждый бит переменной $a сдвигается влево на количество позиций, которое указали в переменной $b (каждая позиция означает «умножить на 2»). |
| >> | Сдвиг вправо | Каждый бит переменной $a сдвигается вправо на количество позиций, которое указали в переменной $b (каждая позиция означает «разделить на 2»). |
Операторы для работы с массивами
$x = ['a','b','c'];
$y = ['d','e','f','g','h'];
$z = $x + $y; // ['a','b','c','g','h']
// если ключи одинаковые, то изменений не будет
$z = $x == $y // совершенно все должно совпадать и ключи и значения, порядок ключей не важен
$z = $x === $y // так же но и типы данных должны совпадать и порядок ключей
// та же логика для != !== <>