Почему isset возвращает true?

Здравствуйте, кто может объяснить мне странное поведение isset
Есть массив
Array
(
    [ID] => 134
    [UF_RATING] => 
    [UF_WORKDONE] => Array
        (
        )

    [UF_CHECKCODE] => 
    [UF_IWEB_SMS_PASSWORD] => 
    [UF_ABOUT_UPDATE] => 
)


И есть условие
if(isset($_user["UF_RATING"]) && !isset($_user["UF_RATING"]["TOTAL"]["PLACE"]))
{

}


Почему isset($_user["UF_RATING"]["TOTAL"]["PLACE"]) возвращает true ?
  • Вопрос задан
  • 259 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
Это не isset($_user["UF_RATING"]["TOTAL"]["PLACE"]) возвращает true, а isset($_user["UF_RATING"]) возвращает false.

Судя по дампу, у вас же там либо пустая строка, либо false, либо NULL. При пустой строке и false всё работает, как ожидается, а при NULL проваливается первая проверка. Используйте для неё array_key_exists.

Если использовать для отладки вместо print_r дебагер или хотя бы var_dump, такие проблемы будет решать гораздо проще.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
от 300 000 до 500 000 ₽
07 мая 2024, в 19:34
10000 руб./за проект
07 мая 2024, в 18:48
5000 руб./за проект
07 мая 2024, в 18:23
20000 руб./за проект