Я редко использую empty()
по той причине, которую вы описываете. Это путает законные ценности с пустотой. Может быть, это потому, что я много работаю в SQL, но я предпочитаю использовать NULL
для обозначения отсутствия значения.
В PHP есть функция is_null()
, которая проверяет, является ли переменная или выражение NULL
.
$foo = 0;
if (is_null($foo)) print "integer 0 is null!\n";
else print "integer 0 foo is not null!\n";
$foo = "0";
if (is_null($foo)) print "string '0' is null!\n";
else print "string '0' is not null!\n";
$foo = "";
if (is_null($foo)) print "string '' is null!\n";
else print "string '' is not null!\n";
$foo = false;
if (is_null($foo)) print "boolean false is null!\n";
else print "boolean false is not null!\n";
Вы также можете использовать оператор равных ===
, чтобы выполнить аналогичный тест:
if ($foo === null) print "foo is null!\n";
Это верно, если $foo
равно NULL
, но не если это false
, ноль, ""
и т. Д.