今天在写php的时候,偶然发现一个特别好玩的事情,具体代码如下:

$a = 0;
if($a == 'abc'){
   echo 'true';
}else{
   echo 'false';
}

怎么样,代码看上去很简单吧?  所以呢?输出结果是 "false" ?  

NO,NO,NO 没那么简单,大家可以自己试一下,这段代码的输出结果是 “true” !!  真的!!


就是这样一段代码,折腾了我一上午,始终没有弄明白 这个 ‘0’ 怎么能和 ‘abc’相等呢?

后来换个几个数字发现,只有0返回‘true’,其他数字返回‘false’。。。。

而且0还可以和null相等。。。。

这一度让我感觉我的世界观是错误的?!!


后来还好有高人之路,终于把这一段迷惑给解开了,下面来分享一下:


这是因为一个数字和一个字符串进行比较,PHP会把字符串转换成数字再进行比较

PHP转换的规则的是:若字符串以数字开头,则取开头数字作为转换结果,若无则输出0

例如:123abc转换后应该是123,而abc则为00==0这当然是成立的啦!

具体可以参见PHP官方手册:比较运算符

嗯嗯,事情的经过就是这样,希望能给有同样困惑的童鞋一点帮助哈~

再贴一个参考链接:php中的类型转换规则

嗯嗯,就这么多啦~ 

标签: php

添加新评论