php array_search()的不区分大小写版本

fwzugrvs  于 5个月前  发布在  PHP
关注(0)|答案(4)|浏览(73)

我有一个这样的数组:

$array = ['oooo', 'no', 'mmmm', 'yes'];

字符串
我想搜索一个词“是”。我知道array_search(),但我想匹配“是”,“是”和“是”以及。
我该怎么做?

whitzsjs

whitzsjs1#

array_search(strtolower($search), array_map('strtolower', $array));

字符串

zqdjd7g9

zqdjd7g92#

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

$response = in_array('yes', array_map('strtolower', $array));

字符串

bxjv4tth

bxjv4tth3#

编辑:对不起,我看到它的价值观,见:http://php.net/manual/en/function.array-change-key-case.php#88648
对于密钥:

$a = array('YES', 'yes', 'Yes'); 
$b = array_change_key_case($a, CASE_LOWER); 
$f = array_search(strtolower($search), $b);

字符串

s4chpxco

s4chpxco4#

对于一个迭代任务来说,转换干草堆中所有值的大小写是不必要的,也是低效的,因为一旦找到一个合格的值,这个任务就可能停止。

$array = ['oooo', 'no', 'mmmm', 'yes'];
$needle = 'Yes';

foreach ($array as $i => $v) {
    if (stripos($v, $needle) !== false) {
        $found = $i;
        break;
    }
}
echo $found ?? 'Not found';
// output: 3

字符串
如果要最小化全局作用域变量,请在Immediately Invoked Functional Expression . Demo中执行循环

echo (function($haystack, $needle) {
          foreach ($haystack as $i => $v) {
              if (stripos($v, $needle) !== false) {
                  return $i;
              }
          }
          return null;
      })($array, $needle) ?? 'Not found';
// output: 3

相关问题