您可以使用 PHP 中的函数式编程来实现它。自 PHP 5.3 以来,它得到了很大的改进。但是,我不得不承认,我认为即使找到了元素,它也会遍历整个数组。迭代解决方案(见下文)可能会停止。
函数式的解决方案可能看起来也有点复杂,所以如果你不明白,只需使用下面的迭代式即可;)我只是写了它,因为我认为函数式通常对于数组任务来说是优雅的。
<?php
function checkIfInArrayString($array, $needle) {
$found = array_reduce($arr, function($isFound, $value) use ($needle) {
return $isFound || false !== strpos($value, $needle);
}, false);
return $found;
}
$arr = array(
'foo',
'my',
'test'
);
var_dump(checkIfInArrayString($arr, 'oo'));
var_dump(checkIfInArrayString($arr, 'ooo'));
这是同一问题的迭代解决方案(未经测试):
function checkIfInArrayString($array, $searchingFor) {
foreach ($array as $element) {
if (strpos($element, $searchingFor) !== false) {
return true;
}
}
return false;
}
我使用strpos
了代替strstr
,因为当您只需要知道一个字符串是否与另一个字符串一起时,PHP 文档建议使用它。strpos
返回的信息更少,因此实现更轻松。