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

2022-08-30 14:12:29

我有一个数组:

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

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

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

我需要做的是删除第一个数组中也出现在第二个数组中的任何项目,例如,在这种情况下,需要删除键1,因为“and”在不允许的单词数组中。

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

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

非常感谢,本


答案 1

你想要array_diff

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

所以你想要这样的东西:

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

答案 2

在 php://It 中使用 array_dif 会从第一个数组中删除第一个数组中的值(如果这些值存在于第二个数组中)。

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