从数组中删除项目,如果它存在于“不允许的单词”数组中

我有一个数组:

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

而且我也有一个不允许的单词数组:

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

我需要做的是删除第一个数组中也出现在第二个数组中的任何项目,在这个例子中,键1需要被删除,因为'and'在不允许的词数组中。

现在我现在有这个代码,它对不允许的单词进行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]); } } 

现在我知道这个代码糟透了,我想知道的是,如果有一个更有效的方法从另一个数组中存在的数组中删除和项,特别是如果它否定使用foreach。

非常感谢,本

你想要array_diff

array_diff返回一个数组,其中包含array1中不存在于其他数组中的所有条目。

所以你想要的东西如:

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

在php://中使用array_dif,如果在第二个数组中存在,它将从第一个数组中删除值。

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