PHP array_search不能使用某些针

时间:2013-07-25 10:38:03

标签: php

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

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

哪会产生:

  

项目不会被添加为禁止类别

我错过了一些明显的东西吗?它适用于“产品信息”而不是“购物”?

3 个答案:

答案 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 

所以其他部分将会工作