Php 为什么是';bob@example.com';在数组中(0,1,2,3,4)?
为什么会这样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“
这是怎么回事 因为
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);