如果项目存在于"不允许的单词"数组中,则从数组中删除该项

Ben*_*ard 24 php arrays

我有一个数组:

Array
(
    [0] => tom
    [1] => and
    [2] => jerry
)
Run Code Online (Sandbox Code Playgroud)

我还有一个不允许的单词数组:

Array
(
    [0] => and
    [1] => foo
    [2] => bar
)
Run Code Online (Sandbox Code Playgroud)

我需要做的是删除第一个数组中也出现在第二个数组中的任何项,例如,在这个实例中,需要删除键1,因为'和'在不允许的单词数组中.

现在我有了这个代码,它对不允许的单词进行了预测,然后使用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]);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

非常感谢,本

Dom*_*ger 58

你想要的array_diff.

array_diff返回一个包含其中array1任何其他数组中不存在的所有条目的数组.

所以你想要这样的东西:

$good = array_diff($arr, $disallowed_words);
Run Code Online (Sandbox Code Playgroud)