2009-11-13 21 views
20

删除的项目我有一个数组:从数组,如果它存在于一个“不允许的词”阵列

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的情况。

非常感谢, 本

回答

49

你想array_diff

array_diff返回包含 全部是 在任何其它 阵列的不存在从array1条目的阵列。

所以,你想是这样的:在PHP array_dif的

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

用途://它消除从第一阵列,如果是存在于第二阵列值。

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