2012-05-14 13 views
30

Eventuali duplicati:
Remove item from array if it exists in a 'disallowed words' arrayRimuovere gli elementi di un array se si trova in un altro

Ho una stringa dinamica che i clienti potranno inviare e voglio creare delimitati da virgole tag da iT:

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

eppure, voglio eliminare uno specifico gruppo di parole (come l'arte definita icles), ma voglio eliminare la chiave e il valore di questa parola, se è nella matrice esploso:

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

Se una di queste parole nella matrice $definite_article sono nella matrice $tags eliminare la chiave e il valore della quella parola e il nuovo array avranno queste parole estratte. Avrò questo array utilizzato da array_rand per scegliere un gruppo casuale di parole. Ho provato molte cose per raggiungere il mio risultato, ma finora nulla. Qualcuno può aiutarmi a trovare una soluzione a questo?

+0

Cercare array_diff() nel manuale – GordonM

+1

CLUE: array_diff() –

+0

cercare su array-diff-key() e il link di riferimento [http://php.net/manual/en/function.array-diff -key.php] – manish1706

risposta

46

Stai cercando 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

Sembra un lavoro facile per array_diff().

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

confronto tra array1 contro array2 e restituisce la differenza.

che in pratica significa che tornerà array1 dopo che è stato spogliato di tutti i valori che esistono in array2.

+0

'array_diff()' manterrà le chiavi dell'array originale [di 'array1'], che è ciò che rende vera questa affermazione. Puoi o non vuoi questo, ma è solo qualcosa di cui essere consapevole. – Jason

+0

array_diff() manterrà le chiavi dell'array originale [di array1] - lo racchiude in array_values ​​- questo reimposta i nuovi tasti dell'array: Esempio: $ new_array = array_values ​​(array_diff ($ array1, $ array2)); – realmag777

Problemi correlati