Удалить элементы одного массива, если он найден в другом
Возможный дубликат:
Удалить элемент из массива, если он существует в массиве "запрещенных слов"
У меня есть динамическая строка, которую отправят клиенты, и я хочу создать теги с разделителями-запятыми:
$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
для выбора из него случайной группы слов. Я пробовал многое для достижения своего результата, но пока ничего. Может ли кто-нибудь помочь мне найти решение?
Ответы
Ответ 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
.