Бинарный оператор

Оригинальное название: 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 имеют приоритет ниже присваивания, поэтому в выражениях со знаком равенства надёжнее писать && и ||. Нестрогое сравнение == приводит типы и порой даёт неожиданный ответ, поэтому для проверок, где важен тип, используют ===. Подробнее о том, как операторы складываются в вычисляемые конструкции, — в статье про выражения.

Обновлено:

Все термины раздела «Backend»

Что будем искать? Например,Продвижение