Foros del Web » Programando para Internet » PHP »

ordenar por un criterio

Estas en el tema de ordenar por un criterio en el foro de PHP en Foros del Web. Hola amigos tengo un array ordenado ascendentemente pero deseo ordenarlo , algo como hace el FIND_IN_SET en mysql se podra hacer algo pero usando array ...
  #1 (permalink)  
Antiguo 14/08/2012, 22:02
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
Pregunta ordenar por un criterio

Hola amigos tengo un array ordenado ascendentemente pero deseo ordenarlo , algo como hace el FIND_IN_SET en mysql se podra hacer algo pero usando array con php.

este es mi array


2012-05-10

2012-06-19

2012-07-14

2012-07-13

2012-08-15

2012-09-16

pero me gustaria poner un criterio de que me ordene primero aquelle fechas mayores al dia actual es decir si hoy es 14 de agosto el array me ordene asi

2012-08-15

2012-09-16

2012-05-10

2012-06-19

2012-07-14

2012-07-13


espero me puedan ayudar saludos
espero sus comentarios
__________________
gerardo
  #2 (permalink)  
Antiguo 14/08/2012, 22:32
Avatar de KsrZ  
Fecha de Ingreso: abril-2011
Ubicación: /home/KsrZ/Desktop
Mensajes: 156
Antigüedad: 13 años
Puntos: 26
Respuesta: ordenar por un criterio

prueba con..
http://php.net/manual/es/function.natsort.php
y dime si te funciona
__________________
for (var i = 0; i < 2; i++){
i = !confirm("Trata a tu código como a ti mismo.. este te esta representando.. no te dejes mal parado")? 0 : i;
}
  #3 (permalink)  
Antiguo 14/08/2012, 22:42
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
Exclamación Respuesta: ordenar por un criterio

muchas gracias por responder

justo estaba terminando el script jeje
espero lo puedan entender

Código PHP:
Ver original
  1. <?php
  2. $hoy = date('Y-m-d');
  3.  
  4. //el valor unix
  5. $fecha_actual = mktime(0,0,0,date('m'),date('d'),date('Y'));
  6.  
  7. echo "hoy es: ".$hoy;
  8.  
  9. //ya ordenadas
  10. $fechas[] = "2012-05-10";
  11. $fechas[] = "2012-05-10";
  12. $fechas[] = "2012-05-10";
  13. $fechas[] = "2012-06-19";
  14. $fechas[] = "2012-06-19";
  15. $fechas[] = "2012-07-14";
  16. $fechas[] = "2012-07-13";
  17. $fechas[] = "2012-08-15";
  18. $fechas[] = "2012-08-15";
  19. $fechas[] = "2012-08-15";
  20. $fechas[] = "2012-08-16";
  21. $fechas[] = "2012-09-06";
  22.  
  23. //quitamos duplicados
  24. $pila_limpia = array_unique($fechas);
  25. //print_r($pila_limpia);
  26. echo "<br><br>";
  27.  
  28. //inicializar indices
  29. $pilanueva = array_values($pila_limpia);
  30. //print_r($pilanueva);
  31.  
  32. for($f=0; $f < count($pilanueva); $f++){
  33.     echo $pilanueva[$f]."<br>";
  34.        
  35.     //comparar fechas
  36.     list($ano,$mes,$dia) = explode('-',$pilanueva[$f]);
  37.    
  38.     # redefinimos la variable $fecha_operar y le almacenamos el valor unix
  39.     $fecha_operar = mktime(0,0,0,$mes,$dia,$ano);
  40.    
  41.     //echo $fecha_operar."<br>";
  42.    
  43.     if($fecha_operar > $fecha_actual)
  44.     {
  45.         echo "la fecha a gestionar proxima es: ".$pilanueva[$f]."<br>";
  46.         $ordenamiento_nuevo[] = $pilanueva[$f];
  47.         //array_unshift($fechas, $pilanueva[$f]);
  48.     }
  49.    
  50.    
  51.     echo "<br>";
  52. }
  53. echo "<br><br>";
  54. print_r($ordenamiento_nuevo);
  55. echo "<br><br>";
  56.  
  57. $combina = array_merge($ordenamiento_nuevo, $pila_limpia);
  58. print_r($combina);
  59. echo "<br><br>";
  60. $fechasnw = array_unique($combina);
  61. print_r($fechasnw);
  62. ?>
  63.  
  64. espero sus comentarios
  65.  
  66. saludos y gracias por responder
__________________
gerardo

Etiquetas: mysql
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 13:10.