我有一个在循环中使用的函数,但它根本不起作用,这是我的代码示例
function is_banned_category($a) {
if(!is_array($a)) {
echo "returning false <Br/>";
return false;
}
$banned_list = array(
'Shopping',
'Product Info'
);
foreach($a as $cat) {
if(array_search($cat,$banned_list)) {
$return = true;
} else {
echo "Not found in:'{$cat}' <br/>";
}
}
return $return;
}
$a = array('Shopping');
if(is_banned_category($a)) {
echo "Item will not be added as it's in banned category";
}
哪会产生:
项目不会被添加为禁止类别
我错过了一些明显的东西吗?它适用于“产品信息”而不是“购物”?
答案 0 :(得分:3)
array_search($cat,$banned_list)
返回0
,导致表达式评估为false。使用in_array()
或使用相同运算符===
进行评估
答案 1 :(得分:1)
函数array_search
将返回找到的事件的索引(可能为0,其值为false
),如果未找到则返回false
,因此您必须使用
if(array_search($cat, $banned_list) !== false) {
[.. do your stuff .. ]
}
执行检查,否则你可以做
if(in_array($cat, $banned_list)) {
[.. do your stuff .. ]
}
嘘,恕我直言,有点清洁。
答案 2 :(得分:1)
array_search返回数组值的键(如果存在),因此在您的情况下 购物的数组键是“0”
if(array_search($cat,$banned_list)) // return 0
所以其他部分将会工作