Добрый день,
У меня странная ошибка.
Вообще говоря, или, по крайней мере, насколько мне известно.
В 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()
Так что это моя ошибка. Спасибо за ответ!
Он переходит в else, потому что переменная - NULL, поэтому это не может быть правдой.






Из документация:
Determine if a variable is set and is not NULL.
Кстати, isset() возвращает логическое значение, нет необходимости использовать ===true в вашем if.
isset()действительно проверяет содержимое вашей переменной. php.net/manual/en/function.isset.php - И посмотрите virendrachandak.com/techtalk/php-isset-vs-empty-vs-is_null - посмотрите, поможет ли.