Оператор Элвиса (?:) Раскрыт в 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