Foros del Web » Programando para Internet » PHP »

comparar dos arreglos

Estas en el tema de comparar dos arreglos en el foro de PHP en Foros del Web. Hola, tengo un pequeño problema, tengo dos arreglos, los dos son dinámicos, pueden tener la misma o diferente cantidad de items (es un arreglo unidimensional). ...
  #1 (permalink)  
Antiguo 14/12/2006, 08:47
Avatar de mamon  
Fecha de Ingreso: enero-2002
Ubicación: Lima
Mensajes: 1.302
Antigüedad: 22 años, 3 meses
Puntos: 3
comparar dos arreglos

Hola, tengo un pequeño problema, tengo dos arreglos, los dos son dinámicos, pueden tener la misma o diferente cantidad de items (es un arreglo unidimensional).

Lo que quiero saber es si se repiten los items comparando un arreglo con el otro, y los items q no estan en un arreglo pero si en el otro y vicecersa.

Un ejemplo, digamos que yo tenia un arreglo con 10 items, luego éste se edita como sea, se mueven los items, se quitan o se agregan.. luego quiero saber exactamente cuales fueron los cambios, pero no me importa saber si se movio el item, solo quiero saber si aun está o se quitó o se agregó otro, no sé qué lógica utilizar.

Gracias de antemano
__________________
Yo si sé lo que es trabajar duro, porque lo he visto.
  #2 (permalink)  
Antiguo 14/12/2006, 09:32
 
Fecha de Ingreso: julio-2002
Ubicación: Capital Federal
Mensajes: 66
Antigüedad: 21 años, 9 meses
Puntos: 0
Re: comparar dos arreglos

no podes registrar los cambios justo cuando ocurren esos cambios?
__________________
Adrián (@ RHCP I Wanna Be Funky Flea)
  #3 (permalink)  
Antiguo 14/12/2006, 09:47
 
Fecha de Ingreso: enero-2005
Ubicación: Salta - Argentina
Mensajes: 322
Antigüedad: 19 años, 3 meses
Puntos: 7
Re: comparar dos arreglos

Estuve leyendo y no logro comprender exactamente que es lo que necesitas hacer...

Podrias poner un ejemplo con una lista de elementos para el arreglo 1 y para el arreglo 2 y cómo deberia de ser el resultado final?

Creo que estaria bueno tener un ejemplo visual para lograr entenderte mejor...
  #4 (permalink)  
Antiguo 14/12/2006, 10:05
Avatar de holahola  
Fecha de Ingreso: mayo-2005
Ubicación: Móstoles - (Madrid)
Mensajes: 214
Antigüedad: 18 años, 11 meses
Puntos: 1
Re: comparar dos arreglos

Cita:
Iniciado por mamon Ver Mensaje

Lo que quiero saber es si se repiten los items comparando un arreglo con el otro, y los items q no estan en un arreglo pero si en el otro y vicecersa.

A mí tampoco me queda claro cual es tu problema. Por si he entendido algo, mira este código:

Código PHP:
<?
$array1
=array ("vaso""plato""bandeja""botella");
$array2=array ("bandeja""vaso""cuchillo");


echo 
'<pre>';
print_r($array1);
echo 
'</pre>';
echo 
'<pre>';
print_r($array2);
echo 
'</pre>';

echo 
"Elementos que existen en las 2 arrays<br>\n";
foreach (
$array1 as $value1) {
    foreach (
$array2 as $value2) {
        if (
$value1 == $value2){
               echo 
"---> $value1<br>\n";
        }
    }
}

echo 
"<br>\nElementos que sólo existen en array1<br>\n";
foreach (
$array1 as $value1) {
    
$encontrado=false;
    foreach (
$array2 as $value2) {
        if (
$value1 == $value2){
            
$encontrado=true;
            
$break;
        }
    }
    if (
$encontrado == false){
           echo 
"---> $value1<br>\n";
    }
}


echo 
"<br>\nElementos que sólo existen en array2<br>\n";
foreach (
$array2 as $value2) {
    
$encontrado=false;
    foreach (
$array1 as $value1) {
        if (
$value1 == $value2){
            
$encontrado=true;
            
$break;
        }
    }
    if (
$encontrado == false){
           echo 
"---> $value2<br>\n";
    }
}
?>
Como puedes comprobar, se comparan 2 array (no importa su clasificación) y se obtienen tres tipos de listado:

1.- Los elementos que están en los dos arrays.
2.- Los que están en el array 1 y no en el 2.
3.- Los que están en el array 2 y no en el 1.

Tras procesarlo, este es el resultado:

Array
(
[0] => vaso
[1] => plato
[2] => bandeja
[3] => botella
)

Array
(
[0] => bandeja
[1] => vaso
[2] => cuchillo
)

Elementos que existen en las 2 arrays
---> vaso
---> bandeja

Elementos que sólo existen en array1
---> plato
---> botella

Elementos que sólo existen en array2
---> cuchillo


Un saludo

Última edición por holahola; 14/12/2006 a las 10:10 Razón: mostrar resultado
  #5 (permalink)  
Antiguo 14/12/2006, 10:29
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 4 meses
Puntos: 4
Re: comparar dos arreglos

Aquí tienes otra forma de hacerlo:
Código PHP:
<?php
$menu 
= array ( 'Principal''Quienes somos''Visión''Misión''Contactanos' );
$otro_menu = array ( 'El menú''Visión''Otro menú''Contactanos' );

$iguales = array();

echo 
"Los valores repetidos son:<br/>";
foreach ( 
$menu as $cuales )
{
   
$igual array_search $cuales$otro_menu );
   if ( 
$igual )
   {
      echo 
"&nbsp;&nbsp;* ".$otro_menu[$igual]."<br/>";
   }
}

echo 
"<p>Los valores del primer array que no estan en el 2do. son:<br/>";
foreach ( 
$menu as $rep )
{
   
$igual1 array_search $rep$otro_menu );
   if ( 
$igual1 )
   {
      continue;
   }
   echo 
"&nbsp;&nbsp;* ".$rep."<br/>";
}

echo 
"<p>Los valores del segundo array que no estan en el 1ro. son:<br/>";
foreach ( 
$otro_menu as $repet )
{
   
$igual2 array_search $repet$menu );
   if ( 
$igual2 )
   {
      continue;
   }
   echo 
"&nbsp;&nbsp;* ".$repet."<br/>";
}
?>
Espero que sea lo que necesitabas o por lo menos te des una idea. Suerte
  #6 (permalink)  
Antiguo 14/12/2006, 18:07
Avatar de mamon  
Fecha de Ingreso: enero-2002
Ubicación: Lima
Mensajes: 1.302
Antigüedad: 22 años, 3 meses
Puntos: 3
Re: comparar dos arreglos

Muchas gracias.. era lo que necesitaba!
__________________
Yo si sé lo que es trabajar duro, porque lo he visto.
  #7 (permalink)  
Antiguo 15/12/2006, 04:56
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 17 años, 9 meses
Puntos: 0
Re: comparar dos arreglos

Y xq no usar las funciones array_diff, array_merge y array_unique?

Me parece un conjunto más cómodo q todo ese código.

Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
  #8 (permalink)  
Antiguo 15/12/2006, 08:53
Avatar de mamon  
Fecha de Ingreso: enero-2002
Ubicación: Lima
Mensajes: 1.302
Antigüedad: 22 años, 3 meses
Puntos: 3
Re: comparar dos arreglos

Ah claro, ese de array_diff ayuda un monton! jajaja.. gracias!
__________________
Yo si sé lo que es trabajar duro, porque lo he visto.
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:46.