Подтвердить что ты не робот

Удалить элементы одного массива, если он найден в другом

Возможный дубликат:
Удалить элемент из массива, если он существует в массиве "запрещенных слов"

У меня есть динамическая строка, которую отправят клиенты, и я хочу создать теги с разделителями-запятыми:

$subject = "Warmly little in before cousin as sussex and an entire set Blessing it ladyship.";
print_r($tags = explode(" ", strtolower($subject)));

И все же я хочу удалить определенную группу слов (например, определенные статьи), но я хочу удалить ключ и значение этого слова, если он находится в разнесенном массиве:

$definite_articles = array('the','this','then','there','from','for','to','as','and','or','is','was','be','can','could','would','isn\'t','wasn\'t', 'until','should','give','has','have','are','some','it','in','if','so','of','on','at','an','who','what','when','where','why','we','been','maybe','further');

Если одно из этих слов в массиве $definite_article находится в массиве $tags, удалите ключ и значение этого слова, и новый массив выведет эти слова. Я буду использовать этот массив array_rand для выбора из него случайной группы слов. Я пробовал многое для достижения своего результата, но пока ничего. Может ли кто-нибудь помочь мне найти решение?

4b9b3361

Ответ 1

Вы ищете array_diff:

$subject = "Warmly little in before cousin as sussex...";
$tags = explode(" ", strtolower($subject));

$definite_articles = array('the','this','then','there','from','for','to','as');

$tags = array_diff($tags, $definite_articles);
print_r($tags);

Посмотрите на действие.

Ответ 2

Звучит как легкая работа для array_diff().

array array_diff ( array $array1 , array $array2 [, array $... ] )

Сравнивает array1 с array2 и возвращает разницу.

В основном это означает, что он вернет array1 после того, как будет лишен всех значений, существующих в array2.