keys - php arraydiff
¿Opuesto a array_intersect? (4)
Encontré este docstore.mik.ua/orelly/webprog/pcook/ch04_24.htm bastante útil.
Es posible que desee un diff inverso, invirtiendo el orden de las matrices en un diff estándar.
¿Existe una función incorporada 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 incorporada que haga lo mismo. Así que por favor, no hay ejemplos de código.
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 quieres es un resultado con "conejo" y "pájaro", pero lo que obtienes es solo conejo porque está buscando lo que está en el primer conjunto pero no el segundo (y no al revés). 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 teclas numéricas.
Eso suena como un trabajo para array_diff
.
Devuelve una matriz que contiene todas las entradas de array1 que no están presentes en ninguna de las otras matrices.
$diff = array_diff($array1, $array2);