PHP 'true' == 0 答案居然是 1


PHP 'true' == 0 答案居然是 1,这个判断导致了长期字符串==1的意识被颠覆。


正文

PHP ‘true’ == 0 答案居然是 1,为真!这个判断颠覆了长期以来认为 字符串 == 1 的认识。

下面举几个实例:

> echo 'true' == 0;  // 1
>
> echo '1true' == 0;  // false
>
> echo '0true' == 0;  // 1
>
> echo 't0rue' == 0;  // 1
>
> echo 'true0' == 0;  // 1

可以看出 字符串 == 数字 判断,会对前面字符串转义,第一位为数字几,转义后就是几,否则都是0。

下面验证一下:

> echo 'true' == 1;  // false
>
> echo '1true' == 1;  // 1
>
> echo '0true' == 1;  // false
>
> echo 't1rue' == 1;  // false
>
> echo 'true1' == 1;  // false

所以涉及到 字符串 == 数字 判断的,请使用 === 判断。里面涉及到php的底层,可以翻着理解下。






参考资料

https://segmentfault.com/q/1010000007725103


返回