2014-02-16 4 views
0

Я пытаюсь найти два массива и возвращает индекс совпадающих слов, которые соответствуют в массиве 1 из массива 2. Ниже приведены массивы:поиска слов в двух массивах

$array1 = array('hello how are you', 'hello I am fine'); 
$array2 = array('hello','how'); 

Я пытаюсь следующий код и он возвращает 0,1, что отлично. Но я хочу только вернуть 0. Я хочу, чтобы он возвращался только там, где оба слова присутствуют в массиве.

foreach ($array1 as $reference => $array) { 
    foreach($array2 as $key => $word) { 
     if(strpos($array, $word) !== false) { 
      echo $reference, PHP_EOL; 
      break; 
     }  
    }  
} 
+0

Попробуйте array_diff() еще? http://us3.php.net/array_diff –

+1

'array_diff' не подходит. –

ответ

1

Вы должны следить за каждый объект из $array2 проверяется против каждого объекта из $array1 затем сравните после внутреннего цикла, чтобы решить, присутствуют ли в $array1 все элементы из $array2. Вот пример:

foreach($array1 as $reference => $array) { 
    $contains = 0; 
    foreach($array2 as $key => $word) { 
     if(strpos($array, $word) !== false) { 
      $contains++; 
     } else { 
      // for performance reasons, e.g. if you have a large array, 
      // you should break the loop here if the word isn't in the 
      // original array 
      break; 
     } 
    } 
    if($contains == count($array2)) { 
     // $array contains all words from $array2 
     echo $reference . PHP_EOL; 
    } else { 
     // $array doesn't contain all the words  
    } 
} 
Смежные вопросы