今天说说php里面几个容易混淆的函数:empty()
、isset()
、is_null()
empty
看一下官方文档里面的定义
当var存在,并且是一个非空非零的值时返回 FALSE 否则返回 TRUE.
以下的东西被认为是空的:
- "" (空字符串)
- 0 (作为整数的0)
- 0.0 (作为浮点数的0)
- "0" (作为字符串的0)
- NULL
- FALSE
- array() (一个空数组)
- $var; (一个声明了,但是没有值的变量)
看一下代码运行的结果,是否符合预期
$a = NULL;
var_dump(empty($a));
$a = '';
var_dump(empty($a));
$a = [];
var_dump(empty($a));
$a = 0;
var_dump(empty($a));
$a = 0.0;
var_dump(empty($a));
$a = "0";
var_dump(empty($a));
$a = FALSE;
var_dump(empty($a));
$b;
var_dump(empty($b));
结果是
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
isset
检查变量是否已设置并且非NULL
$a;
var_dump(isset($a));
$a = NULL;
var_dump(isset($a));
$a = [];
var_dump(isset($a));
var_dump(isset($a['k1']));
unset($a);
var_dump(isset($a));
结果是
bool(false)
bool(false)
bool(true)
bool(false)
bool(false)
null
值 与 NULL
值
这里不区分大小写。将变量赋值为null,不会删除该变量或者unset其值,只是返回NULL值而已
以下三种情况被认为是NULL:
- 被赋值为NULL
- 只声明未赋值
- 被unset了
is_null
可以判断是否是NULL值
$a;
var_dump(is_null($a));
$a = NULL;
var_dump(is_null($a));
$a = null;
var_dump(is_null($a));
$a = '0';
var_dump(is_null($a));
unset($a);
var_dump(is_null($a));
结果是
bool(true)
bool(true)
bool(true)
bool(false)
bool(true)