in_array()不起作用

时间:2014-04-26 01:23:56

标签: php arrays

为什么会返回true。

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

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

编辑:我知道可以通过in_array()严格参数来检查类型。我想知道为什么,特别是我展示的行为。

1 个答案:

答案 0 :(得分:3)

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

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

DEMO

但是,当进行严格的比较时(即考虑类型),结果是完全不同的:

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

DEMO

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

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

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

DEMO