[英]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.