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