PHP isset()函数与empty()函数区别
empty 判断一个变量是否为“空”,isset 判断一个变量是否已经设置。正是这种所谓的“顾名思义”,令我开始时走了些弯路:当一个变量值等于0时,empty()也会成立(True)
empty 判断一个变量是否为“空”,isset 判断一个变量是否已经设置。正是这种所谓的“顾名思义”,令我开始时走了些弯路:当一个变量值等于0时,empty()也会成立(true),因而会发生一些意外。原来,empty 和 isset 虽然都是变量处理函数,它们都用来判断变量是否已经配置,它们却是有一定的区别:empty还会检测变量是否为空、为零。当一个变量值为0,empty 认为这个变量同等于空,即相当于没有设置。
比如检测 $id 变量,当 $id=0 时,用empty 和 isset 来检测变量 $id 是否已经配置,两都将返回不同的值—— empty 认为没有配置,isset 能够取得 $id 的值:
$id=0; empty($id)?print "it's empty .":print "it's $id ."; //结果:it's empty . print " "; !isset($id)?print "it's empty .":print "it's $id ."; //结果:it's 0 .
这意味着,我们在使用变量处理函数时,当该变量可能出现0的值,使用 empty 要小心,这个时候用 isset 取代它更明智一些。
当一个php教程页面的 url 尾部参数出现 id=0 时(比如:test.php?id=0),试比较:
if(empty($id)) $id=1; - 若 id=0 ,id 也会为1 if(!isset($id)) $id=1; - 若 id=0 ,id 不会为1
可分开运行以下代码检测上述推断:
if(empty($id)) $id=1; print $id; // 得到 1 if(!isset($id)) $id=1; print $id; //得到 0
看个实例
$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'; } ?>
由于这是一个语言结构而非函数,因此它无法被变量函数调用。
注: empty() 只检测变量,检测任何非变量的东西都将导致解析错误。换句话说,后边的语句将不会起作用: empty(addslashes($name))。
下面是经过脚本之家测试过的一段isset与empty函数详细例子的代码,看完这个基本上就差不多了
error_reporting(e_all); echo '未定义$var '; echo "isset测试: "; if ( isset ( $var )) { echo '变量$var存在! ' ; } echo "empty测试: "; if ( empty ( $var )){ echo '变量$var的值为空 '; } else { echo '变量$var的值不为空 '; } echo "变量直接测试: "; if ( $var ){ echo '变量$var存在! '; } else { echo '变量$var不存在! '; } echo '---------------------------------- '; echo '$var = '' '; echo "isset测试: "; $var = ''; if ( isset ( $var )) { echo '变量$var存在! ' ; } echo "empty测试: "; if ( empty ( $var )){ echo '变量$var的值为空 '; } else { echo '变量$var的值不为空 '; } echo "变量直接测试: "; if ( $var ){ echo '变量$var存在! '; } else { echo '变量$var不存在! '; } echo '---------------------------------- '; echo '$var = 0 '; echo 'isset测试: '; $var = 0 ; if ( isset ( $var )) { echo '变量$var存在! ' ; } echo "empty测试: "; if ( empty ( $var )){ echo '变量$var的值为空 '; } else { echo '变量$var的值不为空 '; } echo "变量直接测试: "; if ( $var ){ echo '变量$var存在! '; } else { echo '变量$var不存在! '; } echo '---------------------------------- '; echo '$var = null '; echo 'isset测试: '; $var = null ; if ( isset ( $var )) { echo '变量$var存在! ' ; } echo "empty测试: "; if ( empty ( $var )){ echo '变量$var的值为空 '; } else { echo '变量$var的值不为空 '; } echo "变量直接测试: "; if ( $var ){ echo '变量$var存在! '; } else { echo '变量$var不存在! '; } echo '---------------------------------- '; echo '$var ="php" '; echo 'isset测试: '; $var = "php"; if ( isset ( $var )) { echo '变量$var存在! ' ; } echo "empty测试: "; if ( empty ( $var )){ echo '变量$var的值为空 '; } else { echo '变量$var的值不为空 '; } echo "变量直接测试: "; if ( $var ){ echo '变量$var存在! '; } else { echo '变量$var不存在! '; } ?>
本文地址:http://www.phprm.com/function/php1004550.html
转载随意,但请附上文章地址:-)