1

我有一个简单的函数,如果在数组中找到一个值,它应该只给我 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] 中看到一样。

任何想法?

4

2 回答 2

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
于 2013-06-03T13:23:39.477 回答
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;
    }
}

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

于 2013-06-03T13:21:41.190 回答