以下似乎有效,但我真的认为不应该这样做:
if ("'True','False'" == 0)
{
echo 'Hello, World.';
}
是否将最后一个False
从字符串中剔除,如果是这样,为什么,以及如何阻止它?
答案 0 :(得分:3)
这是由于打字松动造成的。将字符串与数字进行比较时,PHP必须将一个字符串转换为另一个类型。在这种情况下,当字符串转换为整数时,该字符串的值为0,条件为True。
答案 1 :(得分:1)
当与数字进行比较时,任何字符串的计算结果为0(除非它是一个弦数,例如“5”或“4string”)。这就是为什么它总是评估为0。
答案 2 :(得分:1)
真正发生的事情是PHP正在尝试进行隐式类型转换,并且由于某种原因,它在转换为整数时决定字符串看起来像0.你可以通过这样做来证明这一点:
echo ((int) "'True','False'");
如果你想进行类型检查比较,你应该使用三等于(===
):
if("'True','False'" === 0)
......这肯定会评估为假。
答案 3 :(得分:1)
没有;它将字符串"'True','False'"
转换为数字 - 该数字为0
。 0 == 0
是true
。如果我正确理解你的意图,或者你应该使用通常使用的严格相等!"'True','False'"
,你可以使用===
来解决它。