php学习之道:php empty()和isset()的差别
在使用 php 编写页面程序时,我常常使用变量处理函数推断 php 页面尾部參数的某个变量值是否为空,開始的时候我习惯了使用 empty() 函数,却发现了一些问题,因此改用 isset() 函数,问题不再。
顾名思义,empty() 推断一个变量是否为“空”,isset() 推断一个变量是否已经设置。
正是这样的所谓的“顾名思义”。令我開始时走了些弯路:当一个变量值等于0时。empty()也会成立(True),因而会发生一些意外。原来,empty() 和 isset() 尽管都是变量处理函数,它们都用来推断变量是否已经配置,它们却是有一定的差别:empty还会检測变量是否为空、为零。
当一个变量值为0,empty() 觉得这个变量同等于空,即相当于没有设置。
比方检測 $id 变量。当 $id=0 时。用empty() 和 isset() 来检測变量 $id 是否已经配置。两都将返回不同的值—— empty() 觉得没有配置,isset() 可以取得 $id 的值:
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(!isset($id)) $id=1; - 若 id=0 。id 不会为1
可分开执行下面代码检測上述判断:
print $id; // 得到 1
if(!isset($id)) $id=1;
print $id; //得到 0
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
要说它们的联系,其共同点就是empty()和isset()都是变量处理函数。作用是推断变量是否已经配置,正是因为它们在处理变量过程中有非常大的相似性,才导致对它们的关系认识不足。单从empty()和isset()这两个函数本身来考虑的话会把人弄得更糊涂。换一个角度来它。empty()和isset()的处理对象无外乎没有定义变量,0,空字符串。
假设变量为0,则empty()会返回TRUE,isset()会返回TRUE。
假设变量为空字符串。则empty()会返回TRUE。isset()会返回TRUE;
假设变量没有定义,则empty()会返回TRUE。isset()会返回FLASE;
手冊中对empty()的解释例如以下:
描写叙述bool empty( mixed var )
假设 var 是非空或非零的值,则 empty()
换句话说,""、0、"0"、
手冊中对isset()的解释例如以下:
isset()检測变量是否设置
描写叙述bool isset
假设 var 存在则返回
假设已经使用 unset()
同一时候要注意的是一个
若想检測常量是否已设置,可使用 defined()函数。
当要 推断一个变量是否已经声明的时候 能够使用 isset 函数
当要 推断一个变量是否已经赋予数据且不为空 能够用 empty 函数
当要 推断 一个变量 存在且不为空 先isset 函数 再用 empty 函数

浙公网安备 33010602011771号