2009-11-13 18 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); 
相關問題