Comparar arrays en PHP

Estaba trabajando plácidamente con arrays cuando me di cuenta de que necesitaba comparar dos arrays y almacenar en un tercero aquellos resultados que fueran diferentes, es decir que estuvieran en uno pero no en el otro.

Como siempre, antes de hacer nada fui a la documentación de PHP por si tenían alguna función ya hecha y no me equivocaba, la función para comparar arrays se llama array_diff() y nos permite obtener un nuevo array con aquellos valores del array1 que no estén en los siguientes arrays.

Si leéis cuidadosamente, veréis que sólo hace la comparación en un sentido, array1 con array2,arra3,.. y no al contrario por lo que no solucionaba mi problema

En caso de que os encontréis con el mismo inconveniente os dejo la función que he utilizado para poder comparar en ambos sentidos dos arrays, devolviendo aquellos valores que se encuentren en uno y no en el otro.


function array_diff_final($arr1,$arr2){
	$result = array();
	foreach ($arr1 as $word1){
		if (!(in_array($word1,$arr2))) $result[]=$word1;
	}
	foreach ($arr2 as $word2){
		if (!(in_array($word2,$arr1))) $result[]=$word2;
	}
	return $result;
}

Después de usarla bastará comprobar si la palabra estaba en el primero o no (is_array()) para saber en qué array estaba y las acciones necesarias a tomar.

Artículos relacionados



Comentarios en Comparar arrays en PHP

Hay 4 Comentarios en el artículo Comparar arrays en PHP, ¿a qué esperas para dar tu opinión?


  1. Anthony dice:

    Me ha servido de mucho para comparar arrays! muchas gracias colega!

  2. Adriano dice:

    ey amigo me podrias ayudar con una consulta..
    resulta que tengo una matriz con todos los dias del mes $cuantosDias, otra que tiene solo algunos (variable)$findDias y necesito saber cuales valores de $findDias estan en $cuantosDias
    espero haberme dado a entender y desde ya te agrdezco la atencion

  3. Internauta dice:

    array_diff… ?

Deja un comentario