主页 M

php isset和empty、==(等)和===(恒等)的异同

2014-12-05 网页编程网 网页编程网

一、isset和empty的区别

单从字面意思理解,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,并且它们的类型也相同。(PHP 4 引进)

$a != $b 不等 TRUE,如果 $a 不等于 $b。

$a <> $b 不等 TRUE,如果 $a 不等于 $b。

$a !== $b 非全等 TRUE,如果 $a 不等于 $b,或者它们的类型不同。(PHP 4 引进)

$a < $b 小与 TRUE,如果 $a 严格小于 $b。

$a > $b 大于 TRUE,如果 $a 严格 $b。

$a <= $b 小于等于 TRUE,如果 $a 小于或者等于 $b。

$a >= $b 大于等于 TRUE,如果 $a 大于或者等于 $b。

如果比较一个整数和字符串,则字符串会被转换为整数。如果比较两个数字字符串,则作为整数比较。此规则也适用于 switch语句。

<?php  
var_dump(0 == "a"); // 0 == 0 -> true  
var_dump("1" == "01"); // 1 == 1 -> true  
var_dump("1" == "1e0"); // 1 == 1 -> true  
switch ("a") {  
    case 0:  
    echo "0";  
    break;  
    case "a": // never reached because "a" is already matched with 0  
    echo "a";  
    break;  
}  
阅读原文
阅读 3437
123 显示电脑版