检查数组是否包含具有另一个数组元素的元素

时间:2013-12-28 13:28:05

标签: php arrays foreach

$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数组中的两个单词包含在文本数组值

2 个答案:

答案 0 :(得分:4)

使用array_intersect()

if (count(array_intersect($find, $text)) >= 1) {
    // both arrays have at least one common element
}

Demo.


更新:如果您要查找$text数组中有多少元素包含$find数组中的任何值(部分匹配或全字匹配) ,您可以使用以下解决方案:

$counter = 0;
foreach($find as $needle) {
    foreach ($text as $haystack) {
        if(strpos($haystack, $needle) !== false) $counter++;
    }
}
echo $counter; // => 2

Demo.

答案 1 :(得分:0)

$counter=0;  
foreach($find as $txt){
 foreach($txt as $value){
        if (strstr($value, $txt)) {
        $counter++;
}
}