2012-05-14 9 views
30

Powiel możliwe:
Remove item from array if it exists in a 'disallowed words' arrayUsuń elementy jednej tablicy, jeśli okaże się, w innym

Mam dynamiczny ciąg znaków, który klienci będą wysyłać i chcę stworzyć rozdzielany przecinkami tagi z to:

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

A jednak chcę usunąć określoną grupę słów (takich jak określona sztuka icles), ale chcę, aby usunąć klucz i wartość tego słowa, jeśli jest w rozłożeniu na tablicy:

$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'); 

Jeśli jeden z tych słów w tablicy $definite_article są w tablicy $tags Usuń klucz i wartość to słowo i nowa tablica będą zawierać te słowa. Ta tablica będzie używana przez array_rand, aby mieć wybraną losową grupę słów. Próbowałem wielu rzeczy, aby osiągnąć mój wynik, ale nic tak daleko. Czy ktoś może mi pomóc znaleźć rozwiązanie tego problemu?

+0

Wyszukiwanie tablicy array_diff() w instrukcji obsługi – GordonM

+1

CLUE: array_diff() –

+0

wyszukuje klucz tablicy-diff() i odnośnik [http://php.net/manual/en/function.array-diff -key.php] – manish1706

Odpowiedz

46

Szukasz 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); 

See it in action.

27

Brzmi jak łatwa praca dla array_diff().

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

Porównuje array1 przed array2 i zwraca różnicę.

co w zasadzie oznacza powróci array1 po to został pozbawiony wszystkich wartości, które istnieją w array2.

+0

'array_diff()' zachowa oryginalne klucze tablicy [z 'tablica1'], co czyni tę instrukcję prawdziwą. Możesz lub nie chcesz tego, ale jest to coś, o czym musisz wiedzieć. – Jason

+0

array_diff() zachowa pierwotne klucze tablicy [z array1] - po prostu zapakuj je w wartości array_values ​​- to zresetuje nowe klucze tablicy: Przykład: $ new_array = wartość_elastacji (array_diff ($ array1, $ array2)); – realmag777

Powiązane problemy