假设我有以下数组:
$enabled = array(
'page' => 'page',
'article' => 0,
);
注意“文章”是键,但不是值。由于in_array()
搜索匹配值,我希望以下行返回 FALSE:
in_array('article', $enabled)
然而,它返回 TRUE。为什么?我错过了什么?
默认情况下,该函数in_array()
执行松散比较,这会导致 PHP 将表达式计算(0 == "article")
为TRUE
.
您还需要使用 strict 参数in_array()
来检查大海捞针的类型:
var_dump( in_array('article', $enabled, true) );
传递第三个参数进行严格类型检查:
in_array('article', $enabled, true);
否则,PHP 将尝试比较0
(integer) 和'article'
(string)。
→'article'
评估为 0!
→他们是平等的!