有人可以解释为什么以下两个语句都返回true?
if ('0e368798' == '00000000')
或
if ((string)'0e368798' == (string)'00000000')
为什么我必须使用strict运算符来检查这两个字符串的相等性?
答案 0 :(得分:4)
因为XeY
是X * 10^(Y)
,而0
次是0
。 0000000
也是0
。 PHP中的==
非常直观地认为如果它可以转换为数字,那应该是。
如果您将数字与字符串进行比较或比较涉及数字字符串,则每个字符串都会转换为数字,并且数字会进行比较。这些规则也适用于switch语句。当比较为===或!==时,不会发生类型转换,因为这涉及比较类型和值。