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)