不区分大小写的数组搜索

Gow*_*wri 63 php arrays

我有这样一个数组:

$array = Array ( 0 => 'oooo',
                 1 => 'no',
                 2 => 'mmmm', 
                 3 => 'yes' ); 
Run Code Online (Sandbox Code Playgroud)

我想搜索"是"这个词.我知道array_search(),但我想匹配"是","是"和"是".

我怎样才能做到这一点?

Hal*_*gür 158

array_search(strtolower($search), array_map('strtolower', $array));
Run Code Online (Sandbox Code Playgroud)

  • `array_map``array_map``array_map``array_map` ...也许现在我会记得这个东西有多大用处! (11认同)
  • @NikolayIvanov依赖于语言环境:[php.net/strtolower](http://php.net/strtolower).如果您不想依赖操作系统区域设置,最好的选择是[mb_strtolower](http://www.php.net/manual/en/function.mb-strtolower.php),这当然不够:例如,参见[此评论](http://www.php.net/manual/en/function.mb-strtolower.php#108346).由于PHP没有像Java或C#这样的语言环境感知字符串函数,因此您必须根据需要实现自己的字符串类/函数:)这是"UTF-8所有内容"无法修复所有内容的区域之一. .. (2认同)

小智 5

您可以使用in_array()代替array_search().

$response = in_array('yes', array_map('strtolower', $array));
Run Code Online (Sandbox Code Playgroud)

  • 注意:PHP 网站上的用户评论指出,通过添加“true”作为第三个参数的“严格”搜索,“in_array”可能会给出更可预测的结果:“$is_there = in_array('yes', array_map('strtolower', $array)” ,真实);`。 (2认同)