length - php hash array




如果項目存在於“不允許的單詞”數組中,則從數組中刪除該項 (2)

我有一個數組:

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]);
    }
}

現在我知道這個代碼很糟糕,我想知道的是,是否有更有效的方法從數組中刪除和項目,它存在於另一個數組中,特別是如果它否定使用foreach。

非常感謝,本


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);

你想要array_diff

array_diff返回一個數組,其中包含array1中任何其他任何數組中都不存在的條目。

所以你想要這樣的東西:

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




arrays