@runapa

Почему условие не выполеяется?

if(!empty($v['some_value']) && $v['some_value'] == '0'){
    ....
}

почему-то даёт false, в то время как !isset($v['some_value']) проверку проходит. Можете объяснить?

ЗЫ: ChatGPT как-то невнятно пояснил этот момент...
  • Вопрос задан
  • 65 просмотров
Решения вопроса 1
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
https://www.php.net/manual/en/types.comparisons.php

0 = empty

https://onlinephp.io/c/c75a6

63ca3eb359692754089564.png

isset проверяет наличие ключа в массиве, но он может быть null, 0 и т.п.
empty проверяет значение на "пустоту"
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Vitsliputsli
empty($var) - это "синтаксический сахар", т.е. это краткая запись следующей конструкции:
!isset($var) || $var == false
т.е. кроме того же самого isset, там еще и сравнение с false, причем с преобразованием типов
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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