PHP: if (!$val) VS if (пустой ($val)). Есть какая-то разница?
мне было интересно, в чем разница в двух случаях ниже, и какой из них рекомендуется?
$val = 0;
if (!$val) {
//True
}
if (empty($val) {
//It's also True
}
3 ответов
посмотреть таблица сравнения типов PHP.
если вы проверите таблицу, вы заметите, что для всех случаев, empty($x)
Это то же самое, что !$x
. Все сводится к обработке неинициализированных переменных. !$x
создает E_NOTICE
, тогда как empty($x)
нет.
Если вы используете empty и переменная никогда не была установлена/создана, предупреждение / ошибка не будет выдано.
давайте посмотрим:
следующие вещи считаются
empty
:
""
(пустая строка)0
(0
как целое число)0.0
(0
как поплавок)"0"
(0
как строку)NULL
FALSE
array()
(пустой array)var $var;
(переменная объявлена, но без значения в классе)
при преобразовании в boolean учитываются следующие значения
FALSE
:
- булево
- целое
0
(ноль)- терки
0.0
(ноль)- пустая строка и строка
"0"
- массив с нулевыми элементами
- объект с нулевыми переменными-членами (только PHP 4)
- специального типа
NULL
(включая переменные unset)SimpleXML
объекты, созданные из пустых тегов
кажется, единственное различие (относительно результирующего значения) заключается в том, как SimpleXML
экземпляр обрабатывается. Все остальное, кажется, дает тот же результат (если вы инвертируете логическое приведение курс.)