在键2之后,in_array()似乎没有检查

时间:2013-06-03 13:15:39

标签: php arrays

我有一个简单的函数,如果在数组中找到一个值,它应该给我TRUE或FALSE。

function bypass($user, $bypassUsers){
    $users = explode(",", $bypassUsers);
    // trim($users);

    if(in_array($user,$users)){
        return true;
    } else {
        return false;
    }
}

虽然对我来说,当数组中有超过2个值时,所有内容都会显示,但函数返回FALSE,就像in_array()没有从键[2]看到一样。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

如果要对所有元素应用修剪,而不是:

$users = explode(",", $bypassUsers);
trim($users);

你应该这样做:

$users = array_map('trim', explode(',', $bypassUsers));

它将trim()应用于explode()的结果。之后,您可以在一个语句中返回结果:

return in_array($user, $users, true); 
// third argument determines whether to use == or === for comparison

答案 1 :(得分:0)

function bypass($user, $bypassUsers){
    $users = explode(",", $bypassUsers);
    foreach($users as $key=>$usr){
        $users[$key] = trim($usr);
    }

    if(in_array(trim($user),$users)){
        return true;
    } else {
        return false;
    }
}

修剪是个问题,因为它适用于字符串而不是数组