Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Como ordernar un array en forma decendente segun la fecha?

Estas en el tema de Como ordernar un array en forma decendente segun la fecha? en el foro de PHP en Foros del Web. Hola a todos los del foro.... He estado buscando alguna manera para ordenar un array de forma descendente conforme lo que el campo fecha contenga... ...
  #1 (permalink)  
Antiguo 03/11/2013, 11:50
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 11 años, 7 meses
Puntos: 3
Pregunta Como ordernar un array en forma decendente segun la fecha?

Hola a todos los del foro....

He estado buscando alguna manera para ordenar un array de forma descendente conforme lo que el campo fecha contenga... espero explicarme bien...

Tengo este array que se llena conforme lo que la base de datos me retorne:
Código PHP:
while($data $this->strData->fetch(PDO::FETCH_ASSOC)){
            
$this->result[] = array('Description' => $data['Description'],
                                  
'host_name' => $data['host_name'],
                            
'IdPlayer' => $data['IdPlayer'],
                            
'Player' => $data['Player'],
                            
'password' => $data['password'],
                            
'ip_address' => $data['ip_address'],
                            
'login_date' => $data['login_date'],
                            
'success' => $data['success'],
                            
'Name' => $data['Name'],
                            
'Email' => $data['Email']);  

Nota: Se que me dirán.... Porque no aplicas un ORDER BY al campo login_date en la consulta? bueno eso no lo hago por un simple motivo: la consulta hace una búsqueda en cuatro tablas diferentes y en dos base de datos separadas entonces es una consulta muy pesada y al aplicar el ORDER BY la hace mucho mas pesada, por este motivo deseo ordenar el array para hacer el retorno de los datos un poco mas rápido.

Alguna ayudita por favor ?
  #2 (permalink)  
Antiguo 03/11/2013, 12:10
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 11 años, 7 meses
Puntos: 3
Pregunta Respuesta: Como ordernar un array en forma decendente segun la fecha?

Hola he estado buscando en la web y no se si esto tal vez me sirva espero me ayuden al respecto:
Código PHP:
$acciones = array(array('nombre'=>'opcion1''fecha'=>'2008-02-20''hora'=>'13:45:23'), array('nombre'=>'opcion2''fecha'=>'2008-01-20''hora'=>'13:35:00'),
                array(
'nombre'=>'opcion3''fecha'=>'2008-01-20''hora'=>'10:15:00'),array('nombre'=>'opcion3''fecha'=>'2008-02-20''hora'=>'18:25:10'));
                
    foreach (
$acciones as $llave => $fila) {
             
$fecha[$llave]  = $fila['fecha'];
             
$hora[$llave] = $fila['hora'];
    }
    
    
array_multisort($fechaSORT_DESC$horaSORT_DESC$acciones); 
El problema esta en que no se como hacer el echo osea lo hice así
Cita:
echo array_multisort($fecha, SORT_DESC, $hora, SORT_DESC, $acciones);
y lo único que me imprimió fue un 1 y no se ni por que. Otra cosa es que la fecha ya viene con todo y hora desde la base de datos entonces no se que hacer... ayudita ???
  #3 (permalink)  
Antiguo 03/11/2013, 12:39
Avatar de bet7o  
Fecha de Ingreso: febrero-2010
Ubicación: DF
Mensajes: 315
Antigüedad: 14 años, 2 meses
Puntos: 20
Respuesta: Como ordernar un array en forma decendente segun la fecha?

Mira este script.

Código PHP:
Ver original
  1. $acciones = array(
  2.     array(
  3.         'nombre'=>'opcion1',
  4.         'fecha'=>'2008-02-20 13:45:23'
  5.     ),
  6.     array(
  7.         'nombre'=>'opcion2',
  8.         'fecha'=>'2008-01-20 13:35:00'
  9.     ),
  10.     array(
  11.         'nombre'=>'opcion3',
  12.         'fecha'=>'2008-01-20 10:15:00'
  13.     ),
  14.     array(
  15.         'nombre'=>'opcion3',
  16.         'fecha'=>'2008-02-20 18:25:10'
  17.     )
  18. );
  19.  
  20. $aux = array();
  21. foreach ($acciones as $item) {
  22.     $key = str_replace(array('-', ':', ' '), '', $item['fecha']);
  23.  
  24.     $aux[$key] = $item;
  25. }
  26.  
  27. krsort($aux);
  28.  
  29. echo '<pre>';
  30. print_r($aux);
__________________
Pero el no contaba con una cosa, mi peligroso desinteres por la vida humana
  #4 (permalink)  
Antiguo 03/11/2013, 13:00
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 11 años, 7 meses
Puntos: 3
Pregunta Respuesta: Como ordernar un array en forma decendente segun la fecha?

Gracias amigo funciona al 100% pero una consulta después de que se ordenan los array de mayor a menor... como hago para ingresarlo en un nuevo array e imprimirlo su contenido en una tabla html ?
  #5 (permalink)  
Antiguo 03/11/2013, 13:14
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Como ordernar un array en forma decendente segun la fecha?

$aux es un array!!!
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #6 (permalink)  
Antiguo 03/11/2013, 13:21
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 11 años, 7 meses
Puntos: 3
Exclamación Respuesta: Como ordernar un array en forma decendente segun la fecha?

es que coloque un
Cita:
echo $aux[0];
y me da un error de conversion de array a string !
  #7 (permalink)  
Antiguo 03/11/2013, 13:25
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Como ordernar un array en forma decendente segun la fecha?

Claro por que $aux es un array "bidimensional"

intenta

echo $aux[0]['nombre']." - ".$aux[0]['fecha'];

o

echo "<pre>";
print_r($aux);
echo "</pre>";
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 03/11/2013 a las 13:26 Razón: cambiar print_f por print_r
  #8 (permalink)  
Antiguo 03/11/2013, 13:27
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 11 años, 7 meses
Puntos: 3
Respuesta: Como ordernar un array en forma decendente segun la fecha?

me da este error amigo:
Cita:
Notice: Undefined offset: 0 in C:\xampp\htdocs\testing\test.php on line 45



Notice: Undefined offset: 0 in C:\xampp\htdocs\testing\test.php on line 45

-
  #9 (permalink)  
Antiguo 03/11/2013, 13:33
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: Como ordernar un array en forma decendente segun la fecha?

prueba con
Código PHP:
Ver original
  1. var_dump($aux);
asi sabremos que tiene ese array
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #10 (permalink)  
Antiguo 03/11/2013, 13:36
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Como ordernar un array en forma decendente segun la fecha?

Código pre:
Ver original
  1. array (size=4)
  2.   '20080220182510' =>
  3.     array (size=2)
  4.       'nombre' => string 'opcion3' (length=7)
  5.       'fecha' => string '2008-02-20 18:25:10' (length=19)
  6.   '20080220134523' =>
  7.     array (size=2)
  8.       'nombre' => string 'opcion1' (length=7)
  9.       'fecha' => string '2008-02-20 13:45:23' (length=19)
  10.   '20080120133500' =>
  11.     array (size=2)
  12.       'nombre' => string 'opcion2' (length=7)
  13.       'fecha' => string '2008-01-20 13:35:00' (length=19)
  14.   '20080120101500' =>
  15.     array (size=2)
  16.       'nombre' => string 'opcion3' (length=7)
  17.       'fecha' => string '2008-01-20 10:15:00' (length=19)

Cierto no funciona un momento....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #11 (permalink)  
Antiguo 03/11/2013, 13:41
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Como ordernar un array en forma decendente segun la fecha?

Código PHP:
Ver original
  1. foreach ($aux as $subaux){
  2. echo $subaux['nombre']." - ".$subaux['fecha']."<br />";
  3. }

Esto funciona...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 03/11/2013 a las 13:48
  #12 (permalink)  
Antiguo 03/11/2013, 13:46
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 11 años, 7 meses
Puntos: 3
Respuesta: Como ordernar un array en forma decendente segun la fecha?

El array actual lo que contiene es esto:

Cita:
array(4) { ["20080220182510"]=> array(2) { ["nombre"]=> string(7) "opcion4" ["fecha"]=> string(19) "2008-02-20 18:25:10" } ["20080220134523"]=> array(2) { ["nombre"]=> string(7) "opcion1" ["fecha"]=> string(19) "2008-02-20 13:45:23" } ["20080120133500"]=> array(2) { ["nombre"]=> string(7) "opcion2" ["fecha"]=> string(19) "2008-01-20 13:35:00" } ["20080120101500"]=> array(2) { ["nombre"]=> string(7) "opcion3" ["fecha"]=> string(19) "2008-01-20 10:15:00" } }
eso me lo mostro al aplicar: var_dump($aux);
  #13 (permalink)  
Antiguo 03/11/2013, 13:51
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 11 años, 7 meses
Puntos: 3
De acuerdo Respuesta: Como ordernar un array en forma decendente segun la fecha?

Cita:
Iniciado por quimfv Ver Mensaje
Código PHP:
Ver original
  1. foreach ($aux as $subaux){
  2. echo $subaux['nombre']." - ".$subaux['fecha']."<br />";
  3. }

Esto funciona...
Perfecto funciona al 100 % ahora lo aplicare al archivo que lo necesita y les aviso !
  #14 (permalink)  
Antiguo 03/11/2013, 13:57
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 11 años, 7 meses
Puntos: 3
Pregunta Respuesta: Como ordernar un array en forma decendente segun la fecha?

Una ayudita mas...

tengo este array que es con el que saco los datos de la base de datos:
Código PHP:
while($data $this->strData->fetch(PDO::FETCH_ASSOC)){
            
$results =  array('Description' => $data['Description'],
                                    
'host_name' => $data['host_name'],
                                    
'IdPlayer' => $data['IdPlayer'],
                                    
'Player' => $data['Player'],
                                    
'password' => $data['password'],
                                    
'ip_address' => $data['ip_address'],
                                    
'login_date' => $data['login_date'],
                                    
'success' => $data['success'],
                                    
'Name' => $data['Name'],
                                    
'Email' => $data['Email']);  
      } 
Como hago para meter ese array de forma que quede igual al del ejemplo osea a este:
Código PHP:
$acciones = array(
        array(
            
'nombre'=>'opcion1'
            
'fecha'=>'2008-02-20 13:45:23'
        
),
        array(
            
'nombre'=>'opcion2',
            
'fecha'=>'2008-01-20 13:35:00'
        
),
        array(
            
'nombre'=>'opcion3'
            
'fecha'=>'2008-01-20 10:15:00'
        
),
        array(
            
'nombre'=>'opcion4',
            
'fecha'=>'2008-02-20 18:25:10'
        
)
      ); 
Necesito hacer eso para poder aplicar el ordenamiento.
  #15 (permalink)  
Antiguo 03/11/2013, 14:00
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Como ordernar un array en forma decendente segun la fecha?

No vale cortar pegar!!! Intenta entender lo que se te esta pasando.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #16 (permalink)  
Antiguo 03/11/2013, 14:04
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 11 años, 7 meses
Puntos: 3
Exclamación Respuesta: Como ordernar un array en forma decendente segun la fecha?

Lo analizo y he intentado hacerlo pero no logro dar en el punto. ayudame amigo necesito sacar eso lo antes posible osea hoy
  #17 (permalink)  
Antiguo 03/11/2013, 14:58
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 11 años, 7 meses
Puntos: 3
Respuesta: Como ordernar un array en forma decendente segun la fecha?

Amigo logre entender mejor el codigo y ya me arroja los datos bien... lo unico que estoy viendo es que no me ordena bien conforme la fecha, el formato de la fecha que yo utilizo es el siguiente: 2013-11-03 12:51:08.853
  #18 (permalink)  
Antiguo 04/11/2013, 03:16
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Como ordernar un array en forma decendente segun la fecha?

$key = str_replace(array('-', ':', ' ','.'), '', $item['fecha']);

Quizas...?
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: fecha, forma, tabla
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:48.