Foros del Web » Programando para Internet » PHP »

Comparar dos arrays desordenados

Estas en el tema de Comparar dos arrays desordenados en el foro de PHP en Foros del Web. Hola muy buenas Vengo para confirmar si no hay nada en la documentación de PHP que haga lo que busco y que por tanto haya ...
  #1 (permalink)  
Antiguo 01/12/2014, 14:22
 
Fecha de Ingreso: mayo-2008
Mensajes: 156
Antigüedad: 16 años
Puntos: 0
Comparar dos arrays desordenados

Hola muy buenas

Vengo para confirmar si no hay nada en la documentación de PHP que haga lo que busco y que por tanto haya que hacerlo "manualmente".

Explico lo que busco:

Tengo dos arrays: array1[] y array2[], en ellos se alojan valores enteros (bueno la idea es un array bidimensional perobueno para la explicación lo haré así).
Ejemplo:

Código PHP:
Ver original
  1. $array1 = array (1, 7, 3, 9, 5);
  2. $array2 = array(7, 5, 9, 1, 2);

Lo que quiero es comparar los dos arrays y confirmar que en ambos hay los mismos valores. En caso contrario mostrar error. Por tanto siguiendo el ejemplo anterior, querría que me diera error al no tener los mismos valores. Sin embargo en el ejemplo siguiente estaría bien porque si están todos los valores del array1 en el array2, aunque estén en total desorden.

Código PHP:
Ver original
  1. $array1 = array (1, 7, 3, 9, 5);
  2. $array2 = array(7, 5, 9, 3, 1);


Como digo, no quiero una solución, sino confirmar que no haya nada en la documentación de PHP (busqué pero no vi nada al respecto) que lo haga de forma "automática".

En caso de tener que hacerlo manual si buscaría consejos (que no la solución).

Yo tenía pensado:
  1. Confirmar que ambos arrays tengan el mismo tamaño
  2. Recorrer el array1 y confimar que sus valores estén en el array2, en caso de que alguno no exista, dar error
Pero bueno se aceptan como no sugerencias, que siempre son bien recibidas.

Gracias como siempre de antemano !
  #2 (permalink)  
Antiguo 01/12/2014, 14:29
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Comparar dos arrays desordenados

Verifica con array_diff.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 01/12/2014, 14:31
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Comparar dos arrays desordenados

Quizá te pueda servir array_diff()
De otro modo, lo que piensas implementar me parece bien, verificar su tamaño, luego recorrer un arreglo y con array_search() ver si existe el valor en el otro arreglo.
  #4 (permalink)  
Antiguo 02/12/2014, 02:03
 
Fecha de Ingreso: septiembre-2014
Mensajes: 180
Antigüedad: 9 años, 7 meses
Puntos: 14
Respuesta: Comparar dos arrays desordenados

Me uno a las recomendaciones de array_diff() pero, como todo en programación, lo puedes conseguir de muchas formas. Quizá también te podría servir array_intersect(), hacer lo que indicas, o usar la combinación de funciones como sort(), count(), etc.

Todos los caminos llevan al array! jaja ;)
__________________
Unelink.es - VPS, servidores dedicados, hosting y dominios. 10 años a tu lado.
  #5 (permalink)  
Antiguo 02/12/2014, 11:11
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años
Puntos: 320
Respuesta: Comparar dos arrays desordenados

Cuidado con array_diff y con array_intersect, ambos requieren una doble validación.
Y digo doble, porque solo estas comparando 2 arrays, si quisieras verificar 50, necesitarías 50 validaciones, es decir tantas validaciones como numero de arrays a comparar.

Dicho de otra forma, usar esas validaciones da como resultado una complejidad lineal, que ademas, debes de programar a mano.

Lo que te propongo para solventar eso, es:

1) Junta a todos los arrays en uno solo mediante array_merge.
2) La funcion anterior sera el argumento de array_unique.
3) Compara el count de cualquier array con el que retorno el punto 2.


Eventualmente, si tus arrays incluyen claves asociativas, debes emplear array_values antes del array_merge del punto 1.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #6 (permalink)  
Antiguo 02/12/2014, 13:58
 
Fecha de Ingreso: mayo-2008
Mensajes: 156
Antigüedad: 16 años
Puntos: 0
Respuesta: Comparar dos arrays desordenados

Gracias a todos pero al final estoy implementando mi idea viendo que al ser bidimensional la cosa "se complicaba un poco".

Pero decir por supuesto que me he quedado de aquí con alguna idea que me va a servir también.

Gracias de nuevo !

Etiquetas: arrays
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:19.