Операторы

Одно значение — унарные операторы

два значения — бинарный оператор

три значения — тернарные операторы

Арифметические операторы

+ - * / 
% деление по модулю
** возведение в степень
// результат вычислений будет изменен на нужный тип данных

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 // так же но и типы данных должны совпадать и порядок ключей

// та же логика для !=  !==  <>

О приоритетах выполнения операторов