$array = ('Home', 'Design', 'Store');
$str = 'home';
if (in_array($str, $array)) {
die("Match");
} else {
die("No Match");
}
结果是“No Match
”=>如何将其修复为“Match
”?
答案 0 :(得分:2)
如上所述Mike K in_array()
区分大小写,因此您可以更改每个数组元素的情况,并将针更改为小写(例如):
function in_array_case_insensitive($needle, $array) {
return in_array( strtolower($needle), array_map('strtolower', $array) );
}
答案 1 :(得分:1)
尝试使用preg_grep
- 作为手册说明:
返回与模式匹配的数组条目
您的代码已经过重新设计以使用它:
$array = array('Home', 'Design', 'Store');
$str = 'home';
if (preg_grep( "/" . $str . "/i" , $array)) {
die("Match");
} else {
die("No Match");
}
或者,如果某种方式正则表达式有点多,您可以使用array_map
与strtolower
来规范化数据,以进行in_array
检查,如下所示:
$array = array('Home', 'Design', 'Store');
$str = 'home';
if (in_array(strtolower($str), array_map('strtolower', $array))) {
die("Match");
} else {
die("No Match");
}
ADDITION:我在评论中声称preg_match
比array_map
更快,but doing some tests online with my code表示根本不是这种情况。因此,请使用您感觉更好的功能。速度似乎有利于array_map
。