繁体   English   中英

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

[英]in_array() does not seem to check after key 2

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

任何想法?

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM