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 "<br>"; !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 |
看个实例
代码如下 |
复制代码 |
<?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'; } ?>
|
由于这是一个语言结构而非函数,因此它无法被变量函数调用。
注: empty() 只检测变量,检测任何非变量的东西都将导致解析错误。换句话说,后边的语句将不会起作用: empty(addslashes($name))。
下面是经过脚本之家测试过的一段isset与empty函数详细例子的代码,看完这个基本上就差不多了
代码如下 |
复制代码 |
<?php error_reporting(e_all); echo '<b>未定义$var</b><br>'; echo "isset测试:<br>"; if ( isset ( $var )) { echo '变量$var存在!<br>' ; } echo "empty测试:<br>"; if ( empty ( $var )){ echo '变量$var的值为空<br>'; } else { echo '变量$var的值不为空<br>'; } echo "变量直接测试:<br>"; if ( $var ){ echo '变量$var存在!<br>'; } else { echo '变量$var不存在!<br>'; } echo '----------------------------------<br>'; echo '<b>$var = ''</b><br>'; echo "isset测试:<br>"; $var = ''; if ( isset ( $var )) { echo '变量$var存在!<br>' ; } echo "empty测试:<br>"; if ( empty ( $var )){ echo '变量$var的值为空<br>'; } else { echo '变量$var的值不为空<br>'; } echo "变量直接测试:<br>"; if ( $var ){ echo '变量$var存在!<br>'; } else { echo '变量$var不存在!<br>'; } echo '----------------------------------<br>'; echo '<b>$var = 0</b><br>'; echo 'isset测试:<br>'; $var = 0 ; if ( isset ( $var )) { echo '变量$var存在!<br>' ; } echo "empty测试:<br>"; if ( empty ( $var )){ echo '变量$var的值为空<br>'; } else { echo '变量$var的值不为空<br>'; } echo "变量直接测试:<br>"; if ( $var ){ echo '变量$var存在!<br>'; } else { echo '变量$var不存在!<br>'; } echo '----------------------------------<br>'; echo '<b>$var = null</b><br>'; echo 'isset测试:<br>'; $var = null ; if ( isset ( $var )) { echo '变量$var存在!<br>' ; } echo "empty测试:<br>"; if ( empty ( $var )){ echo '变量$var的值为空<br>'; } else { echo '变量$var的值不为空<br>'; } echo "变量直接测试:<br>"; if ( $var ){ echo '变量$var存在!<br>'; } else { echo '变量$var不存在!<br>'; } echo '----------------------------------<br>'; echo '<b>$var ="php"</b><br>'; echo 'isset测试:<br>'; $var = "php"; if ( isset ( $var )) { echo '变量$var存在!<br>' ; } echo "empty测试:<br>"; if ( empty ( $var )){ echo '变量$var的值为空<br>'; } else { echo '变量$var的值不为空<br>'; } echo "变量直接测试:<br>"; if ( $var ){ echo '变量$var存在!<br>'; } else { echo '变量$var不存在!<br>'; } ?> |
本文地址:http://www.phprm.com/function/34814.html
转载随意,但请附上文章地址:-)