«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Что такое оператор Элвиса (?:) и как он работает в PHP?

Что такое оператор Элвиса (?:) и как он работает в PHP?

Опубликовано 21 ноября 2024 г.
Просматривать:211

What is the Elvis Operator (?:) and How Does it Work in PHP?

Оператор Элвиса (?:) Раскрыт в PHP

В глубинах сложной кодовой базы PHP вы можете столкнуться с загадочным оператором: ?: оператор. Названный «оператором Элвиса», он может заставить вас задуматься: «Какова его цель?»

Оператор ?:, по сути, оценивает свой левый операнд, если левый операнд считается «истинным», а в противном случае правый операнд. Другими словами:

foo ?: bar

примерно эквивалентен тернарному оператору:

foo ? foo : bar

или в традиционном операторе if-else:

if (foo) {
    foo = foo;
} else {
    foo = bar;
}

Однако, в отличие от тернарного оператора, оператор ?: оценивает левый операнд только один раз, что повышает эффективность.

Пример использования

Один общий вариант использования — самопроверка, как видно из фрагмента кода:

$items = $items ?: $this->_handle->result('next', $this->_result, $this);

Здесь он присваивает результат $this->_handle->result() переменной $items, если $items имеет значение null или falsey, в противном случае $items остается неизменным.

Дополнительно Примеры

Вот еще несколько примеров, поясняющих поведение:

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'); // 'roll'
var_dump('42' ?: 'roll'); // '42'

Если вы столкнетесь с оператором ?: в будущем, помните, что его цель — предоставить краткий способ оценки и присваивания на основе правдивости, делая ваш код более эффективным и читабельным.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3