我敢肯定,这是我福利局PHP知识,简单的根本缺陷,但我很惊讶,当以下事情发生了:字符串比较上一个布尔
$result
是TRUE
...所以为什么它被认为与字符串“email”相等?我猜这是因为,从技术上讲,这是一个bool
,它不是假的?所以当它与一个字符串(例如“email”)进行比较时,它会返回true。
我应该改变我的方法返回结果为string
包含“真”(而不是成功return true;
),或者有另一种方式,我应该这样做吗?
谢谢。
我敢肯定,这是我福利局PHP知识,简单的根本缺陷,但我很惊讶,当以下事情发生了:字符串比较上一个布尔
$result
是TRUE
...所以为什么它被认为与字符串“email”相等?我猜这是因为,从技术上讲,这是一个bool
,它不是假的?所以当它与一个字符串(例如“email”)进行比较时,它会返回true。
我应该改变我的方法返回结果为string
包含“真”(而不是成功return true;
),或者有另一种方式,我应该这样做吗?
谢谢。
是的,true
等于(==
)为非空字符串。不完全相同(===
)。
我建议你仔细阅读type comparison table。
优秀。非常感谢。 – 2011-05-09 14:29:19
+1提醒身份 – 2011-05-09 14:30:52
不完全正确!空字符串(“”)和字符串零(“0”)被视为FALSE。所有其他人都是真的! – 2012-11-16 04:57:31
它返回true,因为php会尝试转换某些东西来比较它们。在这种情况下,它可能会尝试将右侧的字符串转换为布尔值,在这种情况下将为true。真实的==真实是正确的。
通过执行$ result ===“email”(triple =),告诉PHP它不应该执行转换,并且如果类型不匹配应该返回false。
请粘贴您的代码而不是截图。 – TJHeuvel 2011-05-09 14:24:55
@TJ,我发布截图的原因是因为它显示了'$ result'的内容,并且它通过了条件测试。再加上它实际上是三行代码。 – 2011-05-09 14:26:39
啊!它不是我的代码违背编程规律,它只是PHP! – 2014-12-11 13:09:32