int和string之间的PHP布尔表达式行为

时间:2012-05-17 23:05:54

标签: php double boolean expression equals

我无法理解为什么以下两个布尔表达式会返回不同的结果。

(0 == "some_string") returns TRUE
(0 === "some_string") returns FALSE

我理解第二个表达式返回FALSE,因为0和“some_string”的类型不同,但我不明白为什么第一个返回TRUE。 PHP将0评估为FALSE,非空字符串评估为TRUE,0与“some_string”不同。我只是没有看到第一个表达式如何评估它的工作方式。我缺少一个基本概念吗?

1 个答案:

答案 0 :(得分:2)

这是因为它会将"some_string"转换为int,以便将其与0进行比较。 "some_string" int00 == 0true。有关详细信息,请查看有关type juggling的手册页。