PHP中经常需要判断变量是否为空(这里“空”的概念包括是否为“”和是否为null),初学者对变量判断用法比较模糊,以下将对比几个判空概念。
empty()
empty() 用于检测一个变量是否为空,如果被检测的变量为空则返回 TRUE,否则返回 FALSE 。
语法:
bool empty( mixed var )
例子:
<?php
$var = "";
if(empty($var)){
echo '变量 $var 为空';
} else {
echo '变量 $var 不为空';
}
?>
输出结果:
变量 $var 为空
注意:empty()只能用于检测变量
提示:以下是empty()返回true的情况
// 变量没有值
$var = "";
// 变量值为 0 或 "0"
$var = 0;
$var = "0";
// 空数组
$var = array();
// 变量被设置为 null
$var = null;
// 变量被设置为 false
$var = false;
// 被 unset() 函数释放了的变量
unset($var);
// 类里变量被 var 关键字声明,但尚未设定
var $var;
isset()
isset() 用于检测一个或多个变量是否设置,如果被检测的变量存在则返回 TRUE,否则返回 FALSE。
语法:
bool isset( mixed var [, mixed var [, ...]] )
如果检测多个变量时,只要其中一个变量存在,则检测结果就会返回 TRUE 。
例子:
<?php
$var = 1;
if(isset($var)){
echo '变量 $var 已经被设置';
} else {
echo '变量 $var 还未被设置';
}
?>
输出结果:
变量 $var 已经被设置
注意:isset() 只能用于检测变量,传递任何其它参数都将造成解析错误。
提示:下述情况isset()返回false
// 变量被设置为 null
$var = null;
// 被 unset() 释放了的变量
unset($var);
// 类里变量被 var 关键字声明,但尚未设定
var $var;
下述情况isset()返回true
$var = "";
$var = array();
$var = 0;
$var = false;
附:empty()和isset()的比较:
值 | empty() | isset() | bool |
---|---|---|---|
$var = “” | true | true | false |
$var = null | true | false | false |
$var = FALSE | true | true | false |
var $var | true | false | false |
$var = array() | true | true | false |
$var = 0 | true | true | false |
$var = “0” | true | true | false |
可见 empty() 是比 isset() 对变量更严格的检查。
is_null()
is_null() 函数检测变量是否为 NULL ,如果变量是 NULL 则返回 TRUE,否则返回 FALSE。
例子:
<?php
$var = NULL;
if(is_null($var)){
echo '$var 为 NULL';
} else {
echo '$var 变量非 NULL';
}
?>
输出结果:
$var 变量为 NULL