我很确定这是我新手PHP知识中的一个简单的基本缺陷,但是当发生以下情况时我感到很惊讶:
$result
是TRUE
...那么为什么它被认为与字符串“email”相同?我猜这是因为,从技术上讲,它是bool
并且它不是假的?因此,当它与字符串(例如“email”)进行比较时,它返回true。
我是否应该将我的方法更改为以string
包含“true”(而不是return true;
成功时)的结果返回,或者是否有其他方式我应该这样做?
感谢。
答案 0 :(得分:14)
是的,true
与非空字符串相等(==
)。但不一样(===
)。
我建议你仔细阅读type comparison table。
答案 1 :(得分:3)
它返回true,因为php会尝试转换某些内容以便能够比较它们。在这种情况下,它可能会尝试将右侧的字符串转换为bool,在这种情况下将为true。而且= = = true是正确的。
通过$ result ==="电子邮件" (triple =)你告诉PHP它没有进行转换,如果类型不匹配则应返回false。
答案 2 :(得分:1)
if($result === "email")
会做到这一点,但我个人永远不会这样做。