<?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'; } ?> -------------------up from manual 另外在我的机器上 如果写下这样的语句 if(!isset($hot_num)) $hot_num = 1;会报错的
if($str)
与if(!empty($str))
是等价的
empty也不会报错
我认为如果变量为非空非零条件时,使用
if(isset($var)) 等于 if(!empty($var))
但当变量可以传递0,null等参数时。就要使用isset了
这两个是不一样的!
第一个会报错,第二个不会!
是一个notice
$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';
}
?>
-------------------up from manual
另外在我的机器上 如果写下这样的语句 if(!isset($hot_num)) $hot_num = 1;会报错的
if (!$var) {
return TRUE;
}
else {
return FALSE;
}
if ($var) {
return TRUE;
}
else {
return FALSE;
}
另外empty是不会有错误提示的,
// 在打开notice 之后(通常来说开发时应当打开,毕竟使用一个示定义过的变量不规范),会有提示出现
// 比如
// $var = 1; //如果少了这一行,会有提示 Notice: Undefined variable: var in E:\www\test\isset.php on line 6
if($var==1)
{
echo "ok1<br>";
}
else
{
echo "bad1<br>";
}// 而如下的程序则更健壮
// 因为它会首先判断$var这个变量是否存在,再进行值的判断
if(isset($var)&&$var==1)
{
echo "ok2<br>";
}
else
{
echo "bad2<br>";
}// 如下程序也不会有提示信息,即使之前$var这个变量根本不存在
// 因为empty本身就会去检查这个$var是否存在或是值是否为空
// 因此,只要不是需要传递0这样的参数,用empty是很安全的
if(!empty($var)&&$var == 1)
{
echo("ok3<br>");
}
else
{
echo("bad3<br>");
}// 如果给$var赋上0,再用empty就不能顺利执行了
// 此时应当用isset
$var = 0;
if(!empty($var)&&$var == 0)
{
echo("ok4<br>");// 不会执行
}
else
{
echo("bad4<br>");
}// 而如下的可以顺利执行
if(isset($var)&&$var == 0)
{
echo("ok5<br>");// 可以执行
}
else
{
echo("bad5<br>");
}// 此外,isset在用于数组元素的存在判断上也是很有用的
// 比如
if(isset($_POST['act']))
{
echo($_POST['act']."<br>");
}
else
{
echo("none1<br>");
}// 用empty试试,会发现是等价的,但同上,如果此元素的值是0就有可能不会按照原
// 意执行,除非你认为0是应当过滤的
if(!empty($_POST['act']))
{
echo($_POST['act']."<br>");
}
else
{
echo("none2<br>");
}// 直接使用,会用两条提示信息出现
if(!$_POST['act'])
{
echo($_POST['act']."<br>");
}
else
{
echo("none3<br>");
}
?>