我有一个数组:
Array
(
[0] => tom
[1] => and
[2] => jerry
)
我还有一个不允许的单词数组:
Array
(
[0] => and
[1] => foo
[2] => bar
)
我需要做的是删除第一个数组中也出现在第二个数组中的任何项,例如,在这个例子中,需要删除键1,因为'和'在不允许的单词数组中。 / p>
现在我有了这段代码,它对不允许的单词进行了预测,然后使用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。
非常感谢, 本
答案 0 :(得分:55)
你想要array_diff
。
array_diff
返回一个包含的数组 来自array1
的所有条目 不存在于任何其他人中 阵列。
所以你想要这样的东西:
$good = array_diff($arr, $disallowed_words);
答案 1 :(得分:0)
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);