2012-05-14 15 views
30

Duplicar posible:
Remove item from array if it exists in a 'disallowed words' arrayEliminar elementos de un array si se encuentra en otro

tengo una cadena dinámica que los clientes enviar y quiero crear etiquetas delimitados por comas de que:

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

Y, sin embargo, quiero eliminar un grupo específico de palabras (como el arte definido icles), pero quiero eliminar la clave y el valor de esa palabra si está en la matriz explotado:

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

Si una de estas palabras en la matriz $definite_article se encuentran en la matriz $tags eliminar la clave y el valor de esa palabra y la nueva matriz tendrán estas palabras sacadas. Haré que este conjunto sea utilizado por array_rand para tener un grupo aleatorio de palabras seleccionadas. He intentado muchas cosas para lograr mi resultado, pero nada hasta el momento. ¿Alguien puede ayudarme a encontrar una solución a esto?

+0

Buscar array_diff() en el manual – GordonM

+1

CLUE: array_diff() –

+0

consultar array-diff-key() y el enlace de referencia [http://php.net/manual/en/function.array-diff -key.php] – manish1706

Respuesta

46

Usted está buscando 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

Parece un trabajo fácil para array_diff().

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

Compara array1 contra array2 y devuelve la diferencia.

que básicamente significa que volverá array1 después de haber sido despojado de todos los valores que existen en array2.

+0

'array_diff()' retendrá las claves de matriz originales [de 'matriz1'], que es lo que hace que esta declaración sea verdadera. Puede o no querer esto, pero es algo de lo que debe tenerse en cuenta. – Jason

+0

array_diff() retendrá las claves de matriz originales [de array1] - simplemente ajuste wrap-values ​​- esto restablecerá las nuevas claves de matriz: Ejemplo: $ new_array = array_values ​​(array_diff ($ array1, $ array2)); – realmag777

Cuestiones relacionadas