$find=array('or','and','not');
$text=array('jasvjasvor','asmasnand','tekjbdkcjbdsnot');
我必须检查文本数组是否包含找到的任何元素。我能够为单个文本执行此操作,但不知道如何为所有文本执行此操作
$counter=0;
foreach($find as $txt){
if (strstr($text[0], $txt)) {
$counter++;
}
如果我使用这种技术,我将不得不运行foreach次数。还有其他办法吗?
注意如果数组值包含或,而不是整个单词匹配
http://codepad.viper-7.com/VKBMtP
输入
$find=array('or','and','not');
$text=array('jasvjasvor','asmasn','tekjbdkcjbdsnot');
// array values "jasvjasvor" and "tekjbdkcjbdsnot" contains words `or,not`
输出
2 - >由于find数组中的两个单词包含在文本数组值
中答案 0 :(得分:4)
if (count(array_intersect($find, $text)) >= 1) {
// both arrays have at least one common element
}
更新:如果您要查找$text
数组中有多少元素包含$find
数组中的任何值(部分匹配或全字匹配) ,您可以使用以下解决方案:
$counter = 0;
foreach($find as $needle) {
foreach ($text as $haystack) {
if(strpos($haystack, $needle) !== false) $counter++;
}
}
echo $counter; // => 2
答案 1 :(得分:0)
$counter=0;
foreach($find as $txt){
foreach($txt as $value){
if (strstr($value, $txt)) {
$counter++;
}
}