Foros del Web » Programando para Internet » PHP »

Ordenar fechas en array bidimensional [SOLUCIONADO]

Estas en el tema de Ordenar fechas en array bidimensional [SOLUCIONADO] en el foro de PHP en Foros del Web. Hola buenas tardes Encontre esta funcion para ordenar fechas de un array Encontre este ejemplo y de esta manera si me las ordena pero el ...
  #1 (permalink)  
Antiguo 05/03/2009, 15:50
 
Fecha de Ingreso: noviembre-2005
Ubicación: Torreon Coahuila
Mensajes: 100
Antigüedad: 18 años, 4 meses
Puntos: 1
Ordenar fechas en array bidimensional [SOLUCIONADO]

Hola buenas tardes

Encontre esta funcion para ordenar fechas de un array


Encontre este ejemplo y de esta manera si me las ordena pero el array que tengo yo es bidimensional:



Código PHP:
 $fechas = array();
 
$fechas[] = "2009-01-01";
 
$fechas[] = "2009-02-11";
 
$fechas[] = "2009-01-15";
 
$fechas[] = "2009-02-28";
 
$fechas[] = "2009-03-13";
 
$fechas[] = "2009-04-09";
 
$fechas[] = "2009-05-10";

 function 
ordenar_fecha($a$b)
 {
 
$a strtotime($a);
 
$b strtotime($b);
 return 
strcmp($a$b);
 }

 
usort($fechas'ordenar_fecha');

     for(
$x 0$x count($fechas); $x++)
    {
     echo 
$fechas[$x]."<br>";
    } 
Código PHP:

Array 
(
 [
0] => 2009-01-01 
 
[1] => 2009-02-11 
 
[2] => 2009-01-15 
 
[3] => 2009-02-28 
 
[4] => 2009-03-13 
 
[5] => 2009-04-09 
 
[6] => 2009-05-10 
 

Cita:

2009-01-01
2009-01-15
2009-02-11
2009-02-28
2009-03-13
2009-04-09
2009-05-10
Que modificaciones haria para que mi array lo ordenara
Este es mi array
Código PHP:
Array 

 [
1] => Array ( [campo_fecha] => 2009-02-20 
 [
2] => Array ( [campo_fecha] => 2009-02-10 
 [
3] => Array ( [campo_fecha] => 2009-01-01 
 [
4] => Array ( [campo_fecha] => 2009-02-15 
 [
5] => Array ( [campo_fecha] => 2009-02-01 
 [
6] => Array ( [campo_fecha] => 2009-01-30 
 [
7] => Array ( [campo_fecha] => 2009-01-25 
 [
8] => Array ( [campo_fecha] => 2009-01-20 
 [
9] => Array ( [campo_fecha] => 2009-01-10 
 [
10] => Array ( [campo_fecha] => 2009-02-25 
 [
11] => Array ( [campo_fecha] => 2009-02-25 
 [
12] => Array ( [campo_fecha] => 2010-01-01 


Última edición por losporros; 05/03/2009 a las 18:36
  #2 (permalink)  
Antiguo 05/03/2009, 16:48
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
Respuesta: Array de fechas, insertar nueva fecha en array y ordenarlas de menor a may

Hola losporros,

Para PHP ese es un string por lo que para ordenarlo vas a tener que convertir tu array en timestamps y esos compararlos y luego imprimirlos usando date().

Saludos
  #3 (permalink)  
Antiguo 05/03/2009, 17:11
 
Fecha de Ingreso: noviembre-2005
Ubicación: Torreon Coahuila
Mensajes: 100
Antigüedad: 18 años, 4 meses
Puntos: 1
Respuesta: Array de fechas, insertar nueva fecha en array y ordenarlas de menor a may

Pues si a alguien le sirve para ordenar fechas por BIDIMENSIONAL aqui esta la SOLUCION, hice 2 funciones, y creo son el mismo resultado

Código PHP:

//Forma de hacerlo 1

function ordenar_fecha1($a$b)
{
$a_time strtotime($a['campo_fecha']);
$b_time strtotime($b['campo_fecha']);
if(
$a_time == $b_time)
return 
0;
return (
$a $b) ? -1;
}

 
$fechas1 = array();
 
$fechas1[0]['campo_fecha'] = "2009-01-01";
 
$fechas1[1]['campo_fecha'] = "2009-02-11";
 
$fechas1[2]['campo_fecha'] = "2009-01-15";
 
$fechas1[3]['campo_fecha'] = "2009-02-28";
 
$fechas1[4]['campo_fecha'] = "2009-03-13";
 
$fechas1[5]['campo_fecha'] = "2009-04-09";
 
$fechas1[6]['campo_fecha'] = "2009-05-10";

usort($fechas1'ordenar_fecha1');
print_r($fechas1);

//Forma de hacerlo 2

function ordenar_fecha2($a,$b)
{
    return 
strcmp($a["campo_fecha"],$b["campo_fecha"]);
}

 
$fechas2 = array();
 
$fechas2[0]['campo_fecha'] = "2009-01-01";
 
$fechas2[1]['campo_fecha'] = "2009-02-11";
 
$fechas2[2]['campo_fecha'] = "2009-01-15";
 
$fechas2[3]['campo_fecha'] = "2009-02-28";
 
$fechas2[4]['campo_fecha'] = "2009-03-13";
 
$fechas2[5]['campo_fecha'] = "2009-04-09";
 
$fechas2[6]['campo_fecha'] = "2009-05-10";
 
usort($fechas2'ordenar_fecha2');
print_r($fechas2); 
Tambien acepta el arreglo de fechas asi

Código PHP:
$fechas 
array(
array(
'campo_fecha' => 'Tue, December 9, 2008'),
array(
'campo_fecha’'=> 'Tue, December 11, 2008'),
array(
'campo_fecha'=> 'Tue, April 2, 2009'),
array(
'campo_fecha' => 'Tue, December 2, 2008')
); 
Aqui estan los resultados de las 2 soluciones
Código PHP:
Funcion 1:

Array 
(
 [
0] => Array ( [campo_fecha] => 2009-01-01 
 [
1] => Array ( [campo_fecha] => 2009-01-15 
 [
2] => Array ( [campo_fecha] => 2009-02-11 
 [
3] => Array ( [campo_fecha] => 2009-02-28 
 [
4] => Array ( [campo_fecha] => 2009-03-13 
 [
5] => Array ( [campo_fecha] => 2009-04-09 
 [
6] => Array ( [campo_fecha] => 2009-05-10 
 )


Funcion 2:
Array 
(
 [
0] => Array ( [campo_fecha] => 2009-01-01 
 [
1] => Array ( [campo_fecha] => 2009-01-15 
 [
2] => Array ( [campo_fecha] => 2009-02-11 
 [
3] => Array ( [campo_fecha] => 2009-02-28 
 [
4] => Array ( [campo_fecha] => 2009-03-13 
 [
5] => Array ( [campo_fecha] => 2009-04-09 
 [
6] => Array ( [campo_fecha] => 2009-05-10 
 ) 

?> 

Última edición por losporros; 05/03/2009 a las 18:30
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 18:55.