Php 为什么是';bob@example.com';在数组中(0,1,2,3,4)?

Php 为什么是';bob@example.com';在数组中(0,1,2,3,4)?,php,comparison,Php,Comparison,为什么会这样bob@example.com'被认为是在_数组中(0,1,2,3,4) 这是怎么回事 因为0=='bob@example.com“(字符串被转换为一个数字),但是0!=”bob@example.com“ ==和=运算符执行类型强制,并将转换一个操作数以匹配另一个操作数的类型。==和==运算符将返回false _array()中的第三个参数决定使用哪种类型的相等性测试。因为0='bob@example.com“(字符串被转换为一个数字),但是0!=”bob@example.com“

为什么会这样bob@example.com'被认为是在_数组中(0,1,2,3,4)


这是怎么回事

因为
0=='bob@example.com“
(字符串被转换为一个数字),但是
0!=”bob@example.com“

==
=运算符执行类型强制,并将转换一个操作数以匹配另一个操作数的类型。
==
==运算符将返回false


_array()中
的第三个参数决定使用哪种类型的相等性测试。

因为
0='bob@example.com“
(字符串被转换为一个数字),但是
0!=”bob@example.com“

==
=运算符执行类型强制,并将转换一个操作数以匹配另一个操作数的类型。
==
==运算符将返回false


_array()
的第三个参数决定使用哪种类型的相等性测试。

_array
的第三个属性决定测试是否应该严格(
=
)。在所有其他情况下,PHP类型转换固有的怪癖都会发生…

数组中
的第三个属性决定测试是否应该严格(
=
)。在所有其他情况下,PHP类型转换固有的怪癖都会发生

in_array($value, $array, $strict);
是数组中
函数的签名<代码>$strict
,如果为true,则检查
==
,如果为false,则仅检查
=

当您执行
时bob@example.com'==0
结果为true

因此,当您执行第一次检查时,它认为
$email==0
,并返回true

是数组中
函数的签名<代码>$strict
,如果为true,则检查
==
,如果为false,则仅检查
=

当您执行
时bob@example.com'==0
结果为true


因此,当您执行第一次检查时,它认为
$email==0
并返回true。

我只是想尝试一下每个键。所以演员的表演和我预期的完全相反。。。我期望
?'bob@example.com“==(字符串)0
@MikeGraf这正是我从不使用
=
的原因=在PHP中。他们比他们有用的更令人困惑。(当我被允许的时候,你会在11分钟内得到正确的答案)我只是想试一下每个键。所以演员的表演和我预期的完全相反。。。我期望
?'bob@example.com“==(字符串)0
@MikeGraf这正是我从不使用
=
的原因=在PHP中。它们比有用的东西更让人困惑。(如果允许的话,你会在11分钟内得到正确答案)选择@cdhowie的答案,因为他也解释了原因bob@email.com“==0@MikeGraf:我认为他的解释是最好的:)+1-ed渴望得到@cdhowie的答案,因为他也解释了原因”bob@email.com'==0。@MikeGraf:我认为他的解释是最好的:)+1-ed太荒谬了!是不是==&==已经不那么令人困惑了,PHP认为我们也可以在数组中这样做。选择这个作为默认行为是愚蠢的。在我看来,
$strict
参数的默认值应该是真的(并且可以故意使用令人困惑的强制/强制)荒谬!是不是==&==已经不那么令人困惑了,PHP认为我们也可以在数组中这样做。选择此作为默认行为是非常愚蠢的。在我看来,
$strict
参数的默认值应该是真的(并且可以故意使用令人困惑的强制/强制)
in_array($value, $array, $strict);