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как строку)NULLFALSEarray()(пустой array)var $var;(переменная объявлена, но без значения в классе)
при преобразовании в boolean учитываются следующие значения
FALSE:
- булево
- целое
0(ноль)- терки
0.0(ноль)- пустая строка и строка
"0"- массив с нулевыми элементами
- объект с нулевыми переменными-членами (только PHP 4)
- специального типа
NULL(включая переменные unset)SimpleXMLобъекты, созданные из пустых тегов
кажется, единственное различие (относительно результирующего значения) заключается в том, как SimpleXML экземпляр обрабатывается. Все остальное, кажется, дает тот же результат (если вы инвертируете логическое приведение курс.)