前言
对于这两个PHP函数大家肯定都很熟悉,但是其二者的区别又有那些呢?
对比
isset | 检测变量是否被设置过
1. 变量不存在,返回FALSE
2. 变量存在且其值为NULL,返回FALSE
3. 变量存在且值不为NULL,返回TURE
empty | 检测变量是否为空
1.变量存在且值为非空非零的值,返回FALSE
2.变量存在且值为空为零时,返回TRUE
PHP变量被认为空的几种情况
1."" (空字符串)
2.0 (作为整数的0)
3.0.0 (作为浮点数的0)
4."0" (作为字符串的0)
5.NULL
6.FALSE
7.array() (一个空数组)
8.$var; (一个声明了,但是没有值的变量)
例子
代码语言:javascript复制<?php
$var = 0;
// true
if (empty($var)) {
echo 'true, $var为空';
}
// true
if (isset($var)) {
echo 'true, $var被设置过';
}
?>
由此可见,当判断一些变量的时候,不能一味的使用empty或者isset,应该根据实际的情况去使用,如:用户的昵称
如果用户的昵称就是0那你用empty判断不就出问题了嘛,但是如果用户的昵称为空字符串时,用isset判断也同样会有问题,
所以这种情况下就不能简单的用empty或者isset就进行判断。