Foros del Web » Programando para Internet » PHP »

comparar y redordenar dos arrays

Estas en el tema de comparar y redordenar dos arrays en el foro de PHP en Foros del Web. Tengos dos arrays de numeros: $a=array(5,3,4,1,2,6) $b=array(2,4,5) Quiero compararlos y obtener un tercer array que contenga los mismos elementos de $b pero ordenados según el ...
  #1 (permalink)  
Antiguo 15/02/2008, 13:11
Avatar de mrgubu  
Fecha de Ingreso: febrero-2002
Ubicación: Granada
Mensajes: 431
Antigüedad: 22 años, 2 meses
Puntos: 2
comparar y redordenar dos arrays

Tengos dos arrays de numeros:

$a=array(5,3,4,1,2,6)
$b=array(2,4,5)

Quiero compararlos y obtener un tercer array que contenga los mismos elementos de $b pero ordenados según el orden de $a. Es decir, el array resultante sería:

$c=array(5,4,2)

No sé si existe una funcion predefinida para esto en php o tengo que hacer una, por favor necesito ayuda. gracias
  #2 (permalink)  
Antiguo 15/02/2008, 13:23
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: comparar y redordenar dos arrays

No creo que exista una función predefenida, asi que tendras que hacerlo por tu cuenta la función, puedes empezar probando algo así:
Código PHP:
$a=array(5,3,4,1,2,6);
$b=array(2,4,5);
$result = array();
foreach( 
$a as $num ) {
      foreach( 
$b as $compare ) {
              if( 
$num === $compare )
                          
$result[] = $num;
      }
}

var_dump$result ); 
Saludos.
  #3 (permalink)  
Antiguo 15/02/2008, 17:43
Avatar de mrgubu  
Fecha de Ingreso: febrero-2002
Ubicación: Granada
Mensajes: 431
Antigüedad: 22 años, 2 meses
Puntos: 2
Re: comparar y redordenar dos arrays

ok muchas gracias GatorV, me ha funcionado después de darle muchas vueltas con este cambio:

if( $num === $compare )

por
if( $num == $compare )

y no sé muy bien por qué, la verdad
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 02:32.