Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   ordenacion arrays (https://www.clubdelphi.com/foros/showthread.php?t=40052)

halizia 06-02-2007 14:16:33

ordenacion arrays
 
hola a todos, estoy intentando ordenar un array con respecto a un campo, la estructura del array es la siguiente:

Fecha |Descripcion |Estado
31/12/2006| Texto |Texto
....

y para ordenarlo hago lo siguiente:

Código PHP:

 for($i=0;$i<count($datos);$i++){
             
$res[] = array('fecha' => $datos[$i][0], 'descripcion' => $datos[$i][1], 'estado' => $datos[$i][2]);
         }
         foreach (
$res as $llave => $fila) {
            
$fecha[$llave]  = $fila['fecha'];
            
$descripcion[$llave] = $fila['descripcion'];
            
$estado[$llave] = $fila['estado'];
         }
         
$result=array();
         
array_multisort($fecha,SORT_ASC,$descripcionSORT_DESC,$estadoSORT_DESC$res);
         for(
$i=0;$i<count($fecha);$i++){
             
$result[$i][0] = $fecha[$i];
             
$result[$i][1] = $descripcion[$i];
             
$result[$i][2] = $estado[$i];
         } 

pero no me lo ordena bien, si por ejemplo tengo dos fechas 01/02/2007 y otra que sea 21/01/2007 me pone primero la fecha del uno de febrero, en lugar de poner la del 21 de enero.

¿Cómo puedo solucionarlo? ¿Hay algún que otro modo de ordenarlo?

Saludos y gracias!!

lucasarts_18 06-02-2007 14:51:11

Cita:

Empezado por halizia
¿Cómo puedo solucionarlo? ¿Hay algún que otro modo de ordenarlo?

¿Qué tal con sort ?

Hasta Luego -

halizia 06-02-2007 15:21:05

puedes explicarte un poco mejor?? poner un ejemplo o algo asi. los ejemplos de sort ya los he visto y no se usarlo.

kayetano 06-02-2007 17:51:59

Hola

En el enlace que te ha pasado hay ejemplos.
Este es el mismo enlace pero en castellano http://cl.php.net/manual/es/function.sort.php

lucasarts_18 06-02-2007 18:25:27

Hola:

Si tu arreglo tiene índice númericos, puedes usar Sort.
Código SQL [-]
$streets[0] = “Elm St.”; 
$streets[1] = “Oak Dr.”; 
$streets[2] = “7th Ave.”;


Al ordenarlo obtendrás algo así.

Código SQL [-]
$streets[0] = “7th Ave.”; 
$streets[1] = “Elm St.”; 
$streets[2] = “Oak Dr.”;


Si te fijas obtendrás el orden deseado, claro que el orden de los indice anteriores lo pierdes ,en realidad no lo pierdes, sino que cambia el contenido de los indices.

Por otra parte si tus índices tienen claves string, puedes usar Asort

Código SQL [-]
$capitals[‘CA’] = “Sacramento”; 
$capitals[‘TX’] = “Austin”; 
$capitals[‘OR’] = “Salem”;
  
//al ordenarlo tendrás esto  

$capitals[‘TX’] = Austin 
$capitals[‘CA’] = Sacramento 
$capitals[‘OR’] = Salem


Nos vemos..

Hasta Luego -

halizia 07-02-2007 10:15:20

pero mi array no tiene un sólo registro si no que tiene 3, me gustaria que hicises un ejemplo con más de un registro, no se si me explico...

mi array es:

01/03/2007 desc estado
23/01/2007 Desc1 estad1
02/02/2007 desc2 estad2


y quiero q lo ordene por fecha, quedaría una cosa asi:
23/01/2007 Desc1 estad1
02/02/2007 desc2 estad2
01/03/2007 desc estado

y si lo hago con la funcion para ordenar que he puesto más arriba lo hace de este modo:
01/03/2007 desc estado
02/02/2007 desc2 estad2
23/01/2007 Desc1 estad1

no se si con la funcion que me has dihco se puede hacer, pero por favor, pon un ejemplo para ordenar arrays de más de un campo.

Saludos.

roman 07-02-2007 10:50:01

Cita:

Empezado por halizia
si por ejemplo tengo dos fechas 01/02/2007 y otra que sea 21/01/2007 me pone primero la fecha del uno de febrero, en lugar de poner la del 21 de enero

Te está dando el orden correcto. Para PHP, '01/02/2007' y '21/01/2007' sólo son dos cadenas de caracteres y '01' es menor que '21'. Otra cosa sería si pusieras las fechas en formato aaaa/mm/dd: '2007/02/01' y '2007/01/21'.

// Saludos

halizia 07-02-2007 11:47:03

Gracias!! le cambiado el formato de fecha y todo solucionado. con lo fácil que era!

Saludos.


La franja horaria es GMT +2. Ahora son las 22:31:46.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi