Ответ 1
Вы хотите array_diff
.
array_diff
возвращает массив, содержащий все записи изarray1
, которые не присутствовать ни в одном другом Массивы.
Итак, вы хотите что-то вроде:
$good = array_diff($arr, $disallowed_words);
У меня есть массив:
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.
Большое спасибо, Бен
Вы хотите array_diff
.
array_diff
возвращает массив, содержащий все записи изarray1
, которые не присутствовать ни в одном другом Массивы.
Итак, вы хотите что-то вроде:
$good = array_diff($arr, $disallowed_words);
Использование array_dif в php://Удаляет значения из первого массива, если они существуют во втором массиве.
$foo = array(1, 5, 9, 14, 23, 31, 45);
$bar = array(14, 31, 36);
$data = array_diff($foo,$bar);
print_r($data);