Php 使用foreach从结果中删除重复的元素

Php 使用foreach从结果中删除重复的元素,php,arrays,Php,Arrays,我试图在数组中找到一个单词。所以我有两个数组 array1 = array ('This is my first array','This is my second element'); array2= array('This','element') 我想知道array1的引用,其中Array2中的单词匹配。以下代码工作正常,但它重复了引用号: foreach ($array1 as $key => $value) { foreach($array2 as $keys =&

我试图在数组中找到一个单词。所以我有两个数组

 array1 = array ('This is my first array','This is my second element');
 array2= array('This','element')
我想知道array1的引用,其中Array2中的单词匹配。以下代码工作正常,但它重复了引用号:

 foreach ($array1 as $key => $value) {
    foreach($array2 as $keys => $word) {
    if(strpos($value, $word) !== false) {
            echo $key, PHP_EOL;
        }
    } 
}
结果是0 0 1 1,而我想要0 1

您可以使用array_unique来过滤重复

$temp_array = array();

if(strpos($value, $word) !== false) {
    $temp_array[] = $key;
}

print implode(' ', array_unique($key));

特别是在这种情况下,中断;将执行您想要的操作:

foreach ($array1 as $key => $value) {
    foreach($array2 as $keys => $word) {
        if(strpos($value, $word) !== false) {
            echo $key, PHP_EOL;
            break; /*Moves on to next array item in array1 instead of looking for
                     more matches in array2*/
        }
    } 
}

有更好的方法吗?我想你可以将每个变量存储在一个数组中,然后用in_数组检查值是否出现在数组中,如果没有出现,则存储该值,但这比使用array_unique要复杂得多。你似乎在整数值上使用array_unique。是的,你完全正确。这是一个愚蠢的回答,因为他想做什么。在这里,被接受的break答案显然是正确的。