我有一个简单的函数,如果在数组中找到一个值,它应该给我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]看到一样。
有什么想法吗?
答案 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;
}
}
修剪是个问题,因为它适用于字符串而不是数组