Itay Moav-Malimovka
¿Existe una función integrada para obtener todos los miembros de la matriz 1 que no existen en la matriz 2?
Sé cómo hacerlo programáticamente, solo me pregunto si hay una función integrada que haga lo mismo. Así que por favor, no hay ejemplos de código.
Eso suena como un trabajo para array_diff
.
Devuelve una matriz que contiene todas las entradas de matriz1 que no están presentes en ninguna de las otras matrices.
dallas caley
array_diff es definitivamente la opción obvia, pero técnicamente no es lo opuesto a array interesect. Toma este ejemplo:
$arr1 = array('rabbit','cat','dog');
$arr2 = array('cat','dog','bird');
print_r( array_diff($arr1, $arr2) );
Lo que desea es un resultado con ‘conejo’ y ‘pájaro’, pero lo que obtiene es solo un conejo porque está buscando lo que está en la primera matriz pero no en la segunda (y no viceversa). para obtener realmente el resultado que desea, debe hacer algo como esto:
$arr1 = array('rabbit','cat','dog');
$arr2 = array('cat','dog','bird');
$diff1 = array_diff($arr1, $arr2);
$diff2 = array_diff($arr2, $arr1);
print_r( array_merge($diff1, $diff2) );
Nota: este método solo funcionará en matrices con claves numéricas.
-
gracias esto es lo que estaba buscando, esto debería ser marcado como la solución
– artSir
6 mayo 2016 a las 18:08
$diff = array_diff($array1, $array2);
Solo para aclarar que estaba investigando esta pregunta, las respuestas de @Jon y @Dallas Caley son correctas según el dominio de sus matrices.
Si la matriz con lo que está comparando es el dominio completo de sus resultados, entonces un simple array_diff será suficiente según la respuesta de @Jon.
Si la matriz con lo que está comparando NO es el dominio completo de sus resultados, entonces debe optar por el doble array_diff según la respuesta de @Dallas Caley.
jessé
encontré esto docstore.mik.ua/orelly/webprog/pcook/ch04_24.htm bastante útil.
Es posible que desee una diferencia inversa, invirtiendo el orden de las matrices en una diferencia estándar.
Tenga en cuenta que si está buscando funciones con un comportamiento similar, lo más probable es que las encuentre en la página del manual de esa función, en la sección ‘Ver también’, como puede hacer con esta pregunta en php.net/manual/en/function.array-intersect.php
– Aficionado decente
7 abr 2011 a las 14:05