Php if语句的奇怪行为

Php if语句的奇怪行为,php,Php,以下似乎有效,但我真的不认为它应该: if ("'True','False'" == 0) { echo 'Hello, World.'; } 是否将最后一个False从字符串中删除,如果是,原因是什么,如何停止?任何字符串在与数字进行比较时计算为0(除非是字符串数字,如“5”或“4string”)。这就是为什么它总是计算为0 请参见任何字符串在与数字进行比较时计算为0(除非它是字符串数字,如“5”或“4string”)。这就是为什么它总是计算为0 请参阅,这是由于打字松散造成的。当您

以下似乎有效,但我真的不认为它应该:

if ("'True','False'" == 0)
{
    echo 'Hello, World.';
}

是否将最后一个
False
从字符串中删除,如果是,原因是什么,如何停止?

任何字符串在与数字进行比较时计算为0(除非是字符串数字,如“5”或“4string”)。这就是为什么它总是计算为0


请参见

任何字符串在与数字进行比较时计算为0(除非它是字符串数字,如“5”或“4string”)。这就是为什么它总是计算为0


请参阅

,这是由于打字松散造成的。当您将字符串与数字进行比较时,PHP必须将其中一个转换为另一个的类型。在本例中,当转换为整数时,字符串值为0,您的条件为True。

这是由于键入不严格造成的。当您将字符串与数字进行比较时,PHP必须将其中一个转换为另一个的类型。在本例中,当转换为整数时,字符串值为0,您的条件为True。

实际发生的情况是PHP试图进行隐式类型转换,出于某种原因,它决定转换为整数时的字符串看起来像0。您可以通过以下方式向自己证明这一点:

echo ((int) "'True','False'");
如果要进行类型检查比较,应使用三重相等(
==
):


…其结果肯定为false。

实际情况是,PHP正在尝试进行隐式类型转换,出于某种原因,它决定字符串在转换为整数时看起来像0。您可以通过以下方式向自己证明这一点:

echo ((int) "'True','False'");
如果要进行类型检查比较,应使用三重相等(
==
):


…其结果肯定是错误的。

否;它将字符串
“'True','False'”
转换为一个数字,这个数字是
0
0==0
true
。您可以使用
来解决它!“'True','False'”
如果我正确理解了您的意图,或者通过使用严格的等式,
==
,您通常应该使用它。

否;它将字符串
“'True','False'”
转换为一个数字,这个数字是
0
0==0
true
。您可以使用
来解决它!“'True','False'”
如果我正确理解了您的意图,或者通过使用严格的等式,
==
,您通常应该使用