1

我有一个在循环中使用的函数,但是它根本不起作用,这是我的代码示例

    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";
}

这会产生:

项目将不会被添加,因为它在被禁止的类别中

我在这里遗漏了一些明显的东西吗?它适用于“产品信息”但不适用于“购物”?

4

3 回答 3

3

array_search($cat,$banned_list)返回0,witch 导致表达式评估为假。使用in_array()或评估使用相同的运算符===

于 2013-07-25T10:40:24.587 回答
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 .. ]
}

恕我直言,这有点清洁。

于 2013-07-25T10:40:47.477 回答
1

array_search 如果存在则返回数组值的键,因此在您的情况下,购物的数组键为“0”

 if(array_search($cat,$banned_list)) // return 0 

所以其他部分将起作用

于 2013-07-25T10:45:50.453 回答