Php 为什么我从in_array(";a";,$array_name)中得到true

Php 为什么我从in_array(";a";,$array_name)中得到true,php,Php,为什么我会成为现实 但我会从你那里得到虚假 $array_name=array(1,2,3,4,5,6,7,8,9,0); var_dump(in_array("a",$array_name)); 根据您发布的确切代码,您不可能得到正确答案: var_dump(in_array("a",$array_name,true)); 但如果数组中有一个假y值: php > var_dump(in_array("a", array(1,2,3,4,5,6,7,8))); bool(false)

为什么我会成为现实

但我会从你那里得到虚假

$array_name=array(1,2,3,4,5,6,7,8,9,0);
var_dump(in_array("a",$array_name));

根据您发布的确切代码,您不可能得到正确答案:

var_dump(in_array("a",$array_name,true));
但如果数组中有一个假y值:

php > var_dump(in_array("a", array(1,2,3,4,5,6,7,8)));
bool(false)
然后你会得到你期望的结果。将第三个
true
参数传递给_数组中的
将强制在内部执行严格的相等性测试,例如
==
而不是
=

php > var_dump(in_array("a", array(0,1,2,3,4,5,6,7,8)));
                                   ^----- false-y value
bool(true)
php > var_dump(in_array("a", array(0,1,2,3,4,5,6,7,8), true));
bool(false)

首先,在_array()函数的
中有不同的参数

在第一次调用中,默认情况下您有
strict=false
,在第二次调用中,它是
true

这并不意味着您应该得到true,因为
false
是正确的返回值

编辑:

<?php

 $array = array(1,2,3,4,5,6,7,8,9,0); 
 $array2 = array(1,2,3,4,5,6,7,8,9); 
 var_dump(in_array("aaa", $array, false));
 var_dump(in_array("aaa", $array2, false));

?>
我考虑了您在注释中给出的代码,我假设“aaa”被强制转换为整数0,然后在数组中找到0,所以它返回true

尝试从数组中删除0,它将返回false

_array()中的
具有非常意外的行为,这就是为什么将strict选项设置为true是好的

php > var_dump("a" == 0, "a" === 0);
bool(true)
bool(false)

-false我知道我应该得到false,但我确实在我的浏览器上得到了真的你100%肯定你在真实代码中传递了正确的数组吗?你不应该得到真的,不应该得到精确的代码。首先你有in_array with strict=false第二个with strict=true非常感谢!所以0起作用了。这是任何假y值,非常感谢,sir@ray仅供参考:你可以接受答案谁帮了你最大的忙并解决了你的问题()是的,看起来是这样的。0导致了差异。但是非常感谢你的回答。
bool(true) bool(false)