Укрощение оператора Элвиса (?:) в PHP
Загадочный оператор ?: украсил некоторые PHP-коды, оставив вас в недоумении. Эта краткая статья углубляется в его загадочную природу, раскрывая его истинную цель.
Раскрытие оператора ?:
Оператор ?:, также известный как «оператор Элвиса», "функционирует как тернарный оператор. Однако его уникальная особенность заключается в отсутствии выражения, которое можно было бы оценить, если предикат окажется истинным. Вот описание его поведения:
Он вычисляет левый операнд, если левый операнд правдив, т. е. не является нулевым, пустой строкой, ложным или нулевым.
Если левый операнд имеет значение ложь, его результатом является правый операнд.
Важно отметить, что выражение для левого операнда вычисляется только один раз, что обеспечивает эффективность.
Иллюстративные примеры
Для большей ясности рассмотрим следующий фрагмент кода:
$items = $items ?: $this->_handle->result('next', $this->_result, $this);
В этом случае, если $items является правдивым (не нулевым или непустым), значение $items присваивается самому себе. Однако, если $items является ложным, результат $this->_handle->result('next', $this->_result, $this) присваивается $items. Это эффективно обрабатывает неопределенные значения, предоставляя значение по умолчанию.
Дополнительные приложения
Оператор ?: также оказывается полезным в сценариях самопроверки:
foo = foo ?: bar;
Здесь foo будет присвоено значение bar, если foo имеет значение null или false. В противном случае foo остается неизменным.
Демонстрация универсальности
Чтобы проиллюстрировать его универсальность, рассмотрим следующие примеры:
var_dump(5 ?: 0); // 5 var_dump(false ?: 0); // 0 var_dump(null ?: 'foo'); // 'foo' var_dump(true ?: 123); // true var_dump('rock' ?: 'roll'); // 'rock' var_dump('' ?: 'roll'); // 'roll' var_dump('0' ?: 'roll'); // '0' var_dump('42' ?: 'roll'); // '42'
Происхождение слова «Оператор Элвиса»
Его своеобразное прозвище «Оператор Элвиса» связано с его сходством с волосами Элвиса Пресли. Точно так же, как локоны Элвиса были либо уложены в пышную прическу «помпадур», либо зачесаны назад, левый операнд оператора либо истинен, либо ложен, определяя результирующее значение.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3