Бинарный оператор
Оригинальное название: binary operator
Коротко
Оператор, который работает с двумя значениями — слева и справа от себя — и возвращает результат: сумму, сравнение, логическое «и», склеенную строку.
Что такое «Бинарный оператор»
Запись $a + $b — самый привычный случай: плюс стоит между двумя операндами. Так же устроены сравнения, логические связки и присваивание. Для сравнения: у унарного оператора один операнд (-$x, !$flag), а у тернарного — три. Знать эту классификацию нужно не ради теории: от неё зависят приоритеты вычислений и читаемость сложных условий.
Виды бинарных операторов
- Арифметические:
+ - * / %и возведение в степень. - Сравнения:
== === != < > <=>. Оператор<=>возвращает −1, 0 или 1 и удобен в функциях сортировки. - Логические:
&& || and or xor. - Побитовые:
& | ^ << >>— встречаются в масках прав и флагах. - Строковые и специальные: точка для склейки строк в PHP,
??для значения по умолчанию, присваивание=и его сокращения+=,.=.
Приоритет и ассоциативность
Когда в выражении несколько операторов, порядок задают приоритеты: умножение выполняется раньше сложения, сравнение — раньше логического «и». Ассоциативность решает, что делать с операторами одного уровня: 10 - 5 - 2 считается слева направо и даёт 3. Скобки отменяют любые правила и заодно делают намерение очевидным для того, кто будет читать код.
Ловушки PHP
$total = $price + $delivery * $qty; // доставка умножится на количество
$total = ($price + $delivery) * $qty; // скобки меняют порядок
$name = $user['name'] ?? 'Гость'; // нет ключа — подставится «Гость»
$ok = true and false; // $ok === true: «=» сильнее, чем «and»
$ok = true && false; // $ok === false
var_dump('1e3' == '1000'); // true: числовые строки сравниваются как числа
Слова and и or в PHP имеют приоритет ниже присваивания, поэтому в выражениях со знаком равенства надёжнее писать && и ||. Нестрогое сравнение == приводит типы и порой даёт неожиданный ответ, поэтому для проверок, где важен тип, используют ===. Подробнее о том, как операторы складываются в вычисляемые конструкции, — в статье про выражения.

