Foros del Web » Programando para Internet » PHP »

Como ordenar un array segun otro array

Estas en el tema de Como ordenar un array segun otro array en el foro de PHP en Foros del Web. Hola, espero que estén de lo mejor. Tengo una duda que llevo ya días sin poder resolver y es la siguiente: Como transformo este array: ...
  #1 (permalink)  
Antiguo 12/10/2012, 17:53
 
Fecha de Ingreso: julio-2011
Mensajes: 25
Antigüedad: 13 años, 4 meses
Puntos: 0
Pregunta Como ordenar un array segun otro array

Hola, espero que estén de lo mejor.

Tengo una duda que llevo ya días sin poder resolver y es la siguiente:

Como transformo este array:

$array2 ("lala1","lala2","lala4","lala6","lala8");

en un array ya definido que es el siguiente:

$array1 ("lala1","lala2","lala3","lala4","lala5","lala6"," lala7","lala8","lala9","lala10");


He intentado ya pero sin exito... es simple nada mas tiene que quedar como resultado

lala1
lala2
lala4
lala6
lala8

no importando si no están algunos "lala" como es el caso de arriba.

Espero que me puedan ayudar, gracias de antemano y un gran saludo.
  #2 (permalink)  
Antiguo 12/10/2012, 18:02
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 15 años
Puntos: 168
Respuesta: Como ordenar un array segun otro array

si ya has intentado, entonces mostranos tu código
con array_push, podes ingresar elementos dentro de un array, tal vez podrías definir que estos se vallan ingresando dentro de 1 bucle for al array correspondiente, y que estos elementos que vallas ingresando pertenezcan a otro array, creo que no es tan complicado

Código PHP:
Ver original
  1. $array1 = array("hola1","hola2","hola3")
  2. $array2 = array("hola4","hola5","hola5")
  3.  
  4. for($i=0;$i<count($array2);$i++){
  5. array_push($array1, $array2[$i]);
  6. }

no se si es algo así lo que queres.
  #3 (permalink)  
Antiguo 12/10/2012, 18:16
 
Fecha de Ingreso: julio-2011
Mensajes: 25
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Como ordenar un array segun otro array

Cita:
Iniciado por rodrigo791 Ver Mensaje
si ya has intentado, entonces mostranos tu código
con array_push, podes ingresar elementos dentro de un array, tal vez podrías definir que estos se vallan ingresando dentro de 1 bucle for al array correspondiente, y que estos elementos que vallas ingresando pertenezcan a otro array, creo que no es tan complicado

Código PHP:
Ver original
  1. $array1 = array("hola1","hola2","hola3")
  2. $array2 = array("hola4","hola5","hola5")
  3.  
  4. for($i=0;$i<count($array2);$i++){
  5. array_push($array1, $array2[$i]);
  6. }

no se si es algo así lo que queres.
El código con el que intentaba no era igual...

Lo que necesito es... el array 1 es el base ese define como tiene que ir ordenado el array 2

despues lo que hay que hacer es ordenar el array 2 para que quede como el 1

Última edición por Knime; 12/10/2012 a las 18:21
  #4 (permalink)  
Antiguo 12/10/2012, 18:25
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 15 años
Puntos: 168
Respuesta: Como ordenar un array segun otro array

http://www.php.net/manual/es/book.array.php

ahí tenes las funciones de arrays, usalas
  #5 (permalink)  
Antiguo 12/10/2012, 18:58
 
Fecha de Ingreso: julio-2011
Mensajes: 25
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Como ordenar un array segun otro array

Cita:
Iniciado por rodrigo791 Ver Mensaje
[url]http://www.php.net/manual/es/book.array.php[/url]

ahí tenes las funciones de arrays, usalas
Ese es el problema, no sé cual usar y cómo para lograr lo que necesito :S
  #6 (permalink)  
Antiguo 12/10/2012, 19:02
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 15 años
Puntos: 168
Respuesta: Como ordenar un array segun otro array

y bueno, empeza por usar el buscador, que queres hacer? ordenar? busca las funciones de arrays para ordenar, queres agregar un elemento a un array? busca la funciones para agregar elementos, queres eliminar 1 elemento de un array? busca las funciones para eliminar elementos de un array, así es la cosa.
  #7 (permalink)  
Antiguo 12/10/2012, 19:42
 
Fecha de Ingreso: julio-2011
Mensajes: 25
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Como ordenar un array segun otro array

Cita:
Iniciado por rodrigo791 Ver Mensaje
y bueno, empeza por usar el buscador, que queres hacer? ordenar? busca las funciones de arrays para ordenar, queres agregar un elemento a un array? busca la funciones para agregar elementos, queres eliminar 1 elemento de un array? busca las funciones para eliminar elementos de un array, así es la cosa.
ya dije que no quiero agregar... quiero ordernarlo nomas segun el primer array, pero todo lo que he visto me ha sido inútil para lograrlo :S
  #8 (permalink)  
Antiguo 12/10/2012, 19:49
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 15 años
Puntos: 168
Respuesta: Como ordenar un array segun otro array

Vos querés que esto:
$array2 ("lala1","lala2","lala4","lala6","lala8");

quede así:

$array1 ("lala1","lala2","lala3","lala4","lala5","lala6 "," lala7","lala8","lala9","lala10");

tenes que usar array_push, ya te dije, que es lo que estás haciendo al querer transformar un array de 5 elementos en uno de 10? agregando elementos, hay que pensar un poco.

ya te dije la función, ahora usala.
  #9 (permalink)  
Antiguo 12/10/2012, 19:53
 
Fecha de Ingreso: julio-2011
Mensajes: 25
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Como ordenar un array segun otro array

quedo con esto... pero no logro nada..

Cita:
$asidebequedar=array('lala1','lala2','lala3','lala 4','lala5','lala6','lala7','lala8');

$lalala='lala1,lala2,lala3,lala8,lala5,lala4';
$larray=explode(',');
for($i=0;$i<count($lalala);$i++){
$nombre=$larray[$i];
echo $nombre.'<br>';
}
lo unico que necesito es que eso lo ordene como lo tengo definido arriba...
  #10 (permalink)  
Antiguo 12/10/2012, 19:56
 
Fecha de Ingreso: julio-2011
Mensajes: 25
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Como ordenar un array segun otro array

Cita:
Iniciado por rodrigo791 Ver Mensaje
Vos querés que esto:
$array2 ("lala1","lala2","lala4","lala6","lala8");

quede así:

$array1 ("lala1","lala2","lala3","lala4","lala5","lala6 "," lala7","lala8","lala9","lala10");

tenes que usar array_push, ya te dije, que es lo que estás haciendo al querer transformar un array de 5 elementos en uno de 10? agregando elementos, hay que pensar un poco.

ya te dije la función, ahora usala.
No no solo que lo ordene porque originalmente son 10 valores pero no siempre son 10 a veces son 5 aveces 8 a veces 7, 2 y así...

Lo único que necesito es que lo ordene porque están desordenados...
  #11 (permalink)  
Antiguo 12/10/2012, 20:21
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 15 años
Puntos: 168
Respuesta: Como ordenar un array segun otro array

http://php.net/manual/es/function.explode.php

ahí dice como usar explode, porque veo que queres usar un delimitador pero no indicas la cadena que queres partir

Código PHP:
Ver original
  1. $lalala="lala1,lala2,lala3,lala8,lala5,lala4"; //defino cadena
  2. $lalaarray = explode(",",$lalala); //parto la cadena en 1 array separado por comas
  3.  
  4. var_dump($lalaarray); //muestro el array con sus elementos, pero sin ordenar, tal cual como están en la cadena
  5.  
  6. var_dump(sort($lalaarray, SORT_STRING)); //ordeno con la función sort, todos los elementos tomando en cuenta que son un string con SORT_STRING
  7.  
  8. echo var_dump($lalaarray); //muestro los elementos pero ordenados

tal vez sea esto lo que buscas

Última edición por rodrigo791; 12/10/2012 a las 20:35
  #12 (permalink)  
Antiguo 12/10/2012, 21:59
 
Fecha de Ingreso: julio-2011
Mensajes: 25
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Como ordenar un array segun otro array

Cita:
Iniciado por rodrigo791 Ver Mensaje
[url]http://php.net/manual/es/function.explode.php[/url]

ahí dice como usar explode, porque veo que queres usar un delimitador pero no indicas la cadena que queres partir

Código PHP:
Ver original
  1. $lalala="lala1,lala2,lala3,lala8,lala5,lala4"; //defino cadena
  2. $lalaarray = explode(",",$lalala); //parto la cadena en 1 array separado por comas
  3.  
  4. var_dump($lalaarray); //muestro el array con sus elementos, pero sin ordenar, tal cual como están en la cadena
  5.  
  6. var_dump(sort($lalaarray, SORT_STRING)); //ordeno con la función sort, todos los elementos tomando en cuenta que son un string con SORT_STRING
  7.  
  8. echo var_dump($lalaarray); //muestro los elementos pero ordenados

tal vez sea esto lo que buscas
Gracias por tu ayuda pero eso ordena de mayor a menor, lo que necesito como bien dije es que ordene segun el array definido, el array base como por decir así

ya que si tengo: manuel,juan,pedro,luis definido necesitaría que se ordene algo así:

si está así:luis,manuel,pedro

se ordene así: manuel,pedro,luis

Es algo así lo que necesito y gracias desde ya por tu ayuda.
  #13 (permalink)  
Antiguo 13/10/2012, 00:44
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 7 meses
Puntos: 406
Respuesta: Como ordenar un array segun otro array

Teoricamente es muy sencillo, podrías hacer algo así, pero no estoy del todo seguro si te eh entendido bien...

Código PHP:
Ver original
  1. <?php
  2.  
  3. $orden = array('juan','pedro','alejando','alberto','jesus','alfredo');
  4.  
  5. $desorden = $orden;
  6.  
  7. //"desordenamos"
  8. shuffle($desorden);
  9.  
  10. //vemos como se desordenaron
  11. echo 'Array ordenado '.implode(',',$orden).'</br>';
  12. echo 'Array desordenado '.implode(',', $desorden).'</br>';
  13.  
  14. //volvemos a ordenar
  15. $ordenado = array();
  16.  
  17. $numItems = count($orden);
  18.  
  19. for($i=0; $i<$numItems; $i++) {
  20.     $buscar = array_search($orden[$i], $desorden);
  21.  
  22.     if ($buscar !== false) {
  23.         $ordenado[] = $desorden[$buscar];
  24.     }
  25. }
  26.  
  27. //finalmente vemos como se ordeno
  28. echo 'Array ordenado de nuevo '.implode(',',$ordenado).'</br>';
  29. echo 'Array desordenado '.implode(',', $desorden);
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #14 (permalink)  
Antiguo 13/10/2012, 08:39
 
Fecha de Ingreso: julio-2011
Mensajes: 25
Antigüedad: 13 años, 4 meses
Puntos: 0
De acuerdo Respuesta: Como ordenar un array segun otro array

Cita:
Iniciado por Nemutagk Ver Mensaje
Teoricamente es muy sencillo, podrías hacer algo así, pero no estoy del todo seguro si te eh entendido bien...

Código PHP:
Ver original
  1. <?php
  2.  
  3. $orden = array('juan','pedro','alejando','alberto','jesus','alfredo');
  4.  
  5. $desorden = $orden;
  6.  
  7. //"desordenamos"
  8. shuffle($desorden);
  9.  
  10. //vemos como se desordenaron
  11. echo 'Array ordenado '.implode(',',$orden).'</br>';
  12. echo 'Array desordenado '.implode(',', $desorden).'</br>';
  13.  
  14. //volvemos a ordenar
  15. $ordenado = array();
  16.  
  17. $numItems = count($orden);
  18.  
  19. for($i=0; $i<$numItems; $i++) {
  20.     $buscar = array_search($orden[$i], $desorden);
  21.  
  22.     if ($buscar !== false) {
  23.         $ordenado[] = $desorden[$buscar];
  24.     }
  25. }
  26.  
  27. //finalmente vemos como se ordeno
  28. echo 'Array ordenado de nuevo '.implode(',',$ordenado).'</br>';
  29. echo 'Array desordenado '.implode(',', $desorden);
Código:
Muchisimas gracias, si, este era el código que buscaba, como lo tuve que usar fue así:


$orden = array('juan','pedro','alejando','alberto','jesus','alfredo');
 
$desorden = array('alejandro','juan','pedro','alberto','alfredo','jesus');
 
//volvemos a ordenar
$ordenado = array();
 
$numItems = count($orden);
 
for($i=0; $i<$numItems; $i++) {
    $buscar = array_search($orden[$i], $desorden);
 
    if ($buscar !== false) {
        $ordenado[] = $desorden[$buscar];
    }
}
 
//finalmente vemos como se ordeno
echo implode(',',$ordenado).'</br>';
Y con esto no importa que falten datos en el array desordenado, ordena con los datos que posee.

Mil gracias enserio me has ayudado como no tienes idea.
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 22:09.