devilsD
@devilsD

Какой смысл такой конструкции isset($arr[$name]) || array_key_exists($name, $arr)?

В коде Yii2 класс BaseActiveRecord встретил конструкцию:

if (isset($this->_attributes[$name]) || array_key_exists($name, $this->_attributes)) {
            return $this->_attributes[$name];
}

Условие истинное если $this->_attributes[$name] существует, даже если значение равно NULL. Почему тогда нельзя убрать isset ?
  • Вопрос задан
  • 103 просмотра
Пригласить эксперта
Ответы на вопрос 3
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
Ответ написан
Комментировать
@Arik
Скорость, не знаю как php 7, но до 5.6 array_key_exists была оооочень медленная, а вот isset шустрая и выходит если isset отловит, то для array_key_exists соответсвенно меньше работы
Ответ написан
Maksclub
@Maksclub Куратор тега PHP
maksfedorov.ru
Условие истинное если $this->_attributes[$name] существует, даже если значение равно NULL.

Как это существует? Отдает false это выражение с NULL
Почему просто не оставить array_key_exists()? Быстрее:

5b1fedea93eb2111747182.png
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы