Ошибка PHP isset ()? в сочетании с NULL

Добрый день,

У меня странная ошибка.

Вообще говоря, или, по крайней мере, насколько мне известно. В PHP при использовании isset() он просто проверяет, существует ли переменная. Он не проверяет, что в нем пусто.

Если я хочу знать, пустая ли это переменная. Тогда я должен использовать empty().

Теперь я использую следующий код

    if (isset($tab['content']) === true){

Однако я обнаружил, что мой код всегда использует оператор еще.

    ///######## IF NO CONTENT SET
    else {
        debug((int)isset($tab['content']), $tab, gettype($tab['content']));

Итак, я проанализировал {отсюда и функция отладки} содержимое переменной и обнаружил, что «содержимое» действительно установлено. Но это NULL.

0




----


Array
(
    [title] => Location
    [id] => location
    [url] => 
    [content] => 
    [active] => 
    [ajax] => 
    [icon] => 
)



----



NULL

На мой взгляд, это довольно странно.

Since : (int)isset($tab['content'])
Returns : 0

А также

gettype($tab['content'])
Returns : NULL

Я что-то пропустил? Что я делаю неправильно? Или я столкнулся с одной из печально известных функций PHP?

Редактировать

Как указывает: Карстен Куп Я упустил из виду тот факт, что мне не следует использовать isset(). А скорее: array_key_exists()

Так что это моя ошибка. Спасибо за ответ!

isset() действительно проверяет содержимое вашей переменной. php.net/manual/en/function.isset.php - И посмотрите virendrachandak.com/techtalk/php-isset-vs-empty-vs-is_null - посмотрите, поможет ли.
SaganRitual 13.03.2018 13:08

Он переходит в else, потому что переменная - NULL, поэтому это не может быть правдой.

hungrykoala 13.03.2018 13:09
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
151
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Из документация:

Determine if a variable is set and is not NULL.

Кстати, isset() возвращает логическое значение, нет необходимости использовать ===true в вашем if.

Другие вопросы по теме