我有一个像这样的数组:
$array = ['oooo', 'no', 'mmmm', 'yes'];
我想搜索一个词“是”。我知道
array_search()
,但我也想匹配“是”、“是”和“是”。
我该怎么做?
array_search(strtolower($search), array_map('strtolower', $array));
您可以使用
in_array()
代替 array_search()
。
$response = in_array('yes', array_map('strtolower', $array));
编辑:抱歉,我看到它是为了值,请参阅: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);
对于迭代任务来说,转换干草堆中所有值的大小写是不必要且低效的,一旦找到符合条件的值就可能停止。使用条件中断循环。 演示
$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
如果您想最小化全局范围的变量,请在“立即调用函数表达式”内部执行循环。 演示
echo (function($haystack, $needle) {
foreach ($haystack as $i => $v) {
if (stripos($v, $needle) !== false) {
return $i;
}
}
return null;
})($array, $needle) ?? 'Not found';
// output: 3