PHP in_array()认为随机字符串和0是同一件事

PHP in_array()认为随机字符串和0是同一件事,php,arrays,comparison,Php,Arrays,Comparison,看看这个: print_r( (int) in_array('hello',array( 0 => 0)) ); 它返回1 由于您可能很难相信它,下面是一个代码板: 以下是官方参考资料: bool in_数组(混合$needle,数组$haystack[,bool$strict=FALSE]) 是的,似乎is_数组认为随机字符串和0是同一件事 所以我的问题是,我找到一个bug了吗?这种行为是正当的吗?那是醉酒的逻辑还是什么?有人能帮我吗?我正在努力解决这个问题。这不是一个bug。从 不

看看这个:

print_r( (int) in_array('hello',array( 0 => 0)) );
它返回1

由于您可能很难相信它,下面是一个代码板:

以下是官方参考资料:

bool in_数组(混合$needle,数组$haystack[,bool$strict=FALSE])

是的,似乎is_数组认为随机字符串和0是同一件事

所以我的问题是,我找到一个bug了吗?这种行为是正当的吗?那是醉酒的逻辑还是什么?有人能帮我吗?我正在努力解决这个问题。

这不是一个bug。从

不是虫子。。。PHP确实试图将“foobar”转换为一个数字 因为这实际上是不可能的,所以它变为0。这就是为什么会有 第三个参数也是


因为你看了手册;第三个参数专门处理该类型的杂耍。好吧,那么PHP将“foobar”转换为0?因为如果数组包含0=>1,它将返回false。它不仅仅是
foobar
,而是任何字符串值。它从一个字符串中键入一个
(int)
,这就是他们在上面引用的原因。