Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php in_数组()不起作用_Php_Arrays - Fatal编程技术网

Php in_数组()不起作用

Php in_数组()不起作用,php,arrays,Php,Arrays,为什么这是真的 $needle = TRUE; $haystack = array('that', 'this'); print in_array($needle, $haystack); // 1 编辑:我知道可以在_array()中传递严格参数来检查类型。我想知道为什么会显示我显示的行为。当进行松散比较时(即忽略类型),PHP中的任何非空字符串都等于TRUE。您可以通过以下操作进行测试: var_dump('this' == TRUE); var_dump('that' == TRUE)

为什么这是真的

$needle = TRUE;
$haystack = array('that', 'this');

print in_array($needle, $haystack); // 1

编辑:我知道可以在_array()中传递
严格参数来检查类型。我想知道为什么会显示我显示的行为。

当进行松散比较时(即忽略类型),PHP中的任何非空字符串都等于
TRUE
。您可以通过以下操作进行测试:

var_dump('this' == TRUE);
var_dump('that' == TRUE);

但是,当进行严格比较时(即考虑类型),结果会大不相同:

为了在函数中执行严格的比较,必须将可选的第三个参数设置为
TRUE

$needle = TRUE;
$haystack = array('that', 'this');

var_dump(in_array($needle, $haystack, TRUE));

您希望在数组中找到什么,布尔变量还是布尔字符串?根据文档,如果指针是字符串,则比较是以区分大小写的方式进行的。请参阅对及其第三个参数的说明,
$strict
。我知道我可以将strict参数传入_array(),但我想知道我的问题的答案(我现在已经知道了)。据我所知,这不是重复的。我不是问如何解决这个问题,我是问为什么会这样。看到被接受的答案。很好的解释。我知道可以通过严格的参数来比较类型,我只是想了解我遇到的一些不直观的行为。FWIW我在返回一个我不控制的函数(drupal-hookesque调用)时传递bool,其中包含in_数组()。看见
$needle = TRUE;
$haystack = array('that', 'this');

var_dump(in_array($needle, $haystack, TRUE));