PHP下==与===区别

三个要点:
  • 当比较双方同类型时二者没有区别
  • 当双方类型不一致时,==的比较结果无法预知,===为false
  • null也是一种类型

先来个样例
if(1 == "1"){
    echo "1 == 1 is true".PHP_EOL;
}else{
    echo "1 == 1 is false".PHP_EOL;
}


他的输出结果将是true,此时你一定觉得没毛病,PHP时弱类型的语言,1就是等于"1",但是我们通常不建议这么做,原因请看下面的实例
if(1 == true){
    echo "1 == true is true" . PHP_EOL
        . "gettype(1) == "
        . gettype(1) . PHP_EOL
        . "gettype(true) == "
        . gettype(true)
        . PHP_EOL . PHP_EOL;
}else{
    echo "1 == true is false" . PHP_EOL;
}

if("test" == 0){
    echo "test == 0 is true" . PHP_EOL
        . "gettype(\"test\") == "
        . gettype("test") . PHP_EOL
        . "gettype(0) == "
        . gettype(0)
        . PHP_EOL . PHP_EOL;
}else{
    echo "test == 0 is false".PHP_EOL;
}
注释:gettype(var)能够以字符串的形式返回var的数据类型

上方代码输出结果如下
1 == true is true
gettype(1) == integer
gettype(true) == boolean

test == 0 is true
gettype("test") == string
gettype(0) == integer

看到上面1 == true没毛病,但是他们两个的类型时不一样的,true时boolean类型,php中任何数值非零即为true,0为false。因此就引入了上面样例中第二部分代码和第二部分输出的问题,由于0为false,而字符串参与比较时,由于无法直接与boolean比较,string都将被处理为0,这时候,所有的string都将被处理为0。

此外,你如果尝试(0 == null)他将为true,但是 "test" == null却为false。因此看得出来,即使a==b,b==c,但a==c是不确定的,因此,为了养成良好的变成习惯,避免出现不可预知的错误,我们应该尽量使用===。

===的三个要点:
  • 两者类型不等为false
  • 两者值不等为false
  • 两者类型和值都相等为true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值