如何比较数组中的字符串匹配?

时间:2014-06-16 03:50:12

标签: php arrays string

$array = ('Home', 'Design', 'Store');
$str = 'home';
if (in_array($str, $array)) {
   die("Match");
} else {
   die("No Match");
}

结果是“No Match”=>如何将其修复为“Match”?

2 个答案:

答案 0 :(得分:2)

如上所述Mike K in_array()区分大小写,因此您可以更改每个数组元素的情况,并将针更改为小写(例如):

function in_array_case_insensitive($needle, $array) {
     return in_array( strtolower($needle), array_map('strtolower', $array) );
}

Demo

答案 1 :(得分:1)

尝试使用preg_grep - 作为手册说明:

  

返回与模式匹配的数组条目

您的代码已经过重新设计以使用它:

$array = array('Home', 'Design', 'Store');
$str = 'home';
if (preg_grep( "/" . $str . "/i" , $array)) {
   die("Match");
} else {
   die("No Match");
}

或者,如果某种方式正则表达式有点多,您可以使用array_mapstrtolower来规范化数据,以进行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_matcharray_map更快,but doing some tests online with my code表示根本不是这种情况。因此,请使用您感觉更好的功能。速度似乎有利于array_map

  • preg_grep:2.9802322387695E-5秒
  • array_map:1.3828277587891E-5 sec