Удалить элемент из массива, если он существует в массиве «запрещенных слов»

У меня есть массив:

Array ( [0] => tom [1] => and [2] => jerry ) 

И у меня также есть недопустимый массив слов:

 Array ( [0] => and [1] => foo [2] => bar ) 

Что мне нужно сделать, так это удалить любой элемент в первом массиве, который также появляется во втором массиве, например, в этом случае ключ 1 должен быть удален, так как «и» находится в массиве запрещенных слов.

Теперь у меня есть этот код, который делает foreach на запрещенных словах, а затем использует array_search для поиска любых совпадений:

 $arr=array('tom','and','jerry'); $disallowed_words=array('and','or','if'); foreach($disallowed_words as $key => $value) { $arr_key=array_search($value,$array); if($arr_key!='') { unset($search_terms[$arr_key]); } } не $arr=array('tom','and','jerry'); $disallowed_words=array('and','or','if'); foreach($disallowed_words as $key => $value) { $arr_key=array_search($value,$array); if($arr_key!='') { unset($search_terms[$arr_key]); } } 

Теперь я знаю, что этот код отстой, я хочу знать, есть ли более эффективный метод удаления и элемент из массива, где он существует в другом массиве, особенно если он отрицает использование foreach.

Большое спасибо, Бен

Related of "Удалить элемент из массива, если он существует в массиве «запрещенных слов»"

Вы хотите array_diff .

array_diff возвращает массив, содержащий все записи из array1 , которые не присутствуют ни в одном из других массивов.

Итак, вы хотите что-то вроде:

 $good = array_diff($arr, $disallowed_words); 

Использование array_dif в php: // Удаляет значения из первого массива, если они существуют во втором массиве.

  $foo = array(1, 5, 9, 14, 23, 31, 45); $bar = array(14, 31, 36); $data = array_diff($foo,$bar); print_r($data);