bool上的字符串比较

时间:2011-05-09 14:23:20

标签: php conditional boolean-operations

我很确定这是我新手PHP知识中的一个简单的基本缺陷,但是当发生以下情况时我感到很惊讶:

enter image description here

$resultTRUE ...那么为什么它被认为与字符串“email”相同?我猜这是因为,从技术上讲,它是bool并且它不是假的?因此,当它与字符串(例如“email”)进行比较时,它返回true。

我是否应该将我的方法更改为以string包含“true”(而不是return true;成功时)的结果返回,或者是否有其他方式我应该这样做?

感谢。

3 个答案:

答案 0 :(得分:14)

是的,true与非空字符串相等(==)。但不一样(===)。

我建议你仔细阅读type comparison table

答案 1 :(得分:3)

它返回true,因为php会尝试转换某些内容以便能够比较它们。在这种情况下,它可能会尝试将右侧的字符串转换为bool,在这种情况下将为true。而且= = = true是正确的。

通过$ result ==="电子邮件" (triple =)你告诉PHP它没有进行转换,如果类型不匹配则应返回false。

答案 2 :(得分:1)

if($result === "email")会做到这一点,但我个人永远不会这样做。