单从字面意思理解,empty是判断一个变量是否为“空”,而isset则是判断一个变量是否已经设置。
但是这里有一点绝对要注意起来:当一个变量值为0,empty认为这个变量同等于空,即相当于没有设置。
比如当我们检测$id变量的时候,当$id=0,用empty和isset来检测变量$id是否已经配置,两都将返回不同的值:empty认为没有配置,isset则能够取得$id的值,看下边例子:
$id=0;empty($id)print"我是空的":print"我是$id.";//结果:我是空的!isset($id)print"我是空的":print"我是$id.";//结果:我是0
二、==(等)和===(恒等)的区别
回顾上面第四条空字符串("")和NULL的区别,再来看一个例子:
''==NULL;''===NULL;
运行之后你会发现第一个为true,而第二个则为false!可见==只是比较值是否相等,而===则不但比较值,还会比较类型,更为严格。
引用网摘:
恒等计算符,和比较运算符号“==”的区别是“==”不会检查条件式的表达式的类型,恒等计算符会同时检查表达式的值与类型。这主要和php是无类型语言有关,比如NULL,FALSE,array(),”",0,”0″这几个值如果用==他们是相等的,但是你如果判断出某个值真正的返回值呢,就可以用===$a=0;$b=FALSE;$a===FALSE不成立,但$b===FALSE成立,如果是==,$a==FALSE和$b==FALSE都成立
===运算符还是很有用的,php有些内置函数成功会返回某个值,失败会返回false,假如成功了但返回的是”"或者0之类的空值你怎么判断成功或者失败呢这是就可以用===,它可以区分变量类型。
参考:
比较运算符例子名称结果$a==$b等于TRUE,如果$a等于$b。$a===$b全等TRUE,如果$a等于$b,并且它们的类型也相同。(PHP4引进)$a!=$b不等TRUE,如果$a不等于$b。$a<>$b不等TRUE,如果$a不等于$b。$a!==$b非全等TRUE,如果$a不等于$b,或者它们的类型不同。(PHP4引进)$a<$b小与TRUE,如果$a严格小于$b。$a>$b大于TRUE,如果$a严格$b。$a<=$b小于等于TRUE,如果$a小于或者等于$b。$a>=$b大于等于TRUE,如果$a大于或者等于$b。
如果比较一个整数和字符串,则字符串会被转换为整数。如果比较两个数字字符串,则作为整数比较。此规则也适用于switch语句。