1

假设我有以下数组:

$enabled = array(
  'page' => 'page',
  'article' => 0,
);

注意“文章”是键,但不是值。由于in_array()搜索匹配值,我希望以下行返回 FALSE:

in_array('article', $enabled)

然而,它返回 TRUE。为什么?我错过了什么?

4

2 回答 2

7

默认情况下,该函数in_array()执行松散比较,这会导致 PHP 将表达式计算(0 == "article")TRUE.

您还需要使用 strict 参数in_array()来检查大海捞针的类型:

var_dump( in_array('article', $enabled, true) );

演示!

于 2013-10-09T15:02:47.150 回答
0

传递第三个参数进行严格类型检查:

in_array('article', $enabled, true);

否则,PHP 将尝试比较0(integer) 和'article'(string)。
'article'评估为 0!
→他们是平等的!

示例@codepad.org

于 2013-10-09T15:02:29.127 回答