Задать вопрос
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 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 3
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
Ответ написан
Комментировать
@Arik
Скорость, не знаю как php 7, но до 5.6 array_key_exists была оооочень медленная, а вот isset шустрая и выходит если isset отловит, то для array_key_exists соответсвенно меньше работы
Ответ написан
Maksclub
@Maksclub Куратор тега PHP
Условие истинное если $this->_attributes[$name] существует, даже если значение равно NULL.

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

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

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

Похожие вопросы