一、unset()
unset()是注销定义的变量,注意在 PHP 3 中,unset() 将返回 TRUE(实际上是整型值 1),而在 PHP 4 中,unset() 不再是一个真正的函数:它现在是一个语句。这样就没有了返回值,试图获取 unset() 的返回值将导致解析错误。
<?php
$a="hello";
$b= &$a;
unset($b);
if(!isset($b)){
echo "vrjnhh";
}
运行结果:
可见,使用unset()语句后变量将被销毁。
二、isset()
isset()用于判断一个变量是否定义过。
返回值:
若变量不存在则返回FALSE
若变量存在且其值为NULL,也返回FALSE
若变量存在且值不为NULL(包括0),则返回TURE
同时检查多个变量时,每个单项都符号上一条要求时才返回TRUE,否则结果为FALSE
isset()只能用于变量,因为传递任何其它参数都将造成解析错误。若想检测常量是否已设置,可使用defined()函数。
<?php
$a="";
if(isset($a)){
echo "1";
}else{
echo '0';
}
运行结果:
<?php
$a=null;
if(isset($a)){
echo "1";
}else{
echo '0';
}
运行结果:
三、defined()
defined() 函数检查某常量是否存在。
返回值:
若常量存在,则返回 true,否则返回 false。
<?php
define("GREETING","Hello world!");
echo defined("GREETING");
?>
运行结果:
四、empty()
empty()用于检查一个变量是否为空。
返回值:
若变量不存在则返回TRUE
若变量存在且值为""、0、"0"、NULL、、FALSE、array()、var $var;以及没有任何属性的对象,则返回TURE
若变量存在且值不为""、0、"0"、NULL、、FALSE、array()、var $var;以及没有任何属性的对象,则返回FALSE
empty()只能用于变量,传递任何其它参数都将造成Paser error而终止运行。
<?php
$a=null;
if(empty($a)){
echo "1";
}else{
echo '0';
}
运行结果:
<?php
if(empty($a=123)){
echo "1";
}else{
echo '0';
}
输出结果:
五、isset()和empty()区别
<?php
$var = 0; // 结果为 true,因为 $var 为空
if (empty($var)) {
echo '$var is either 0 or not set at all';
}// 结果为 false,因为 $var 已设置
if (!isset($var)) {
echo '$var is not set at all';
}
运行结果:
小结:
当要判断一个变量是否已经声明的时候可以使用isset函数
当要判断一个变量是否已经赋予数据且补位空,可以用empty函数
当要判断一个变量存在且不为空,先isset函数,再用empty函数