Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Programación General (http://www.forosdelweb.com/f14/)
-   -   Organizacion de un arreglo por un campo? (http://www.forosdelweb.com/f14/organizacion-arreglo-por-campo-615981/)

charlygarcia 17/08/2008 19:39

Organizacion de un arreglo por un campo?
 
Hola a todos
Muy agradecido por todo lo que me ayudan y enseñan

Tengo una duda

Tengo un archivo de la siguiente manera

1::carlos::10000::NULL::
2::pedro::20000::NULL::
3::marcos::210000::NULL::
4::david::1000::NULL::
5::Michael::150000::NULL::
6::George::17200::NULL::
7::Javier::18000::NULL::

Necesito mostrarlos en una tabla HTML, pero necesito que salgan ordenados por la tercer columna de menor a mayor, mejor dicho deberia quedar asi:


4::david::1000::NULL::
1::carlos::10000::NULL::
6::George::17200::NULL::
7::Javier::18000::NULL::
2::pedro::20000::NULL::
5::Michael::150000::NULL::
3::marcos::210000::NULL::

con sql seria facil, pero usando archivos planos y teniendo en cuenta que el valor de la tercer columna se guarda como texto como lo deberia hacer ???

muchas gracias por la colaboracion:

jferrero 18/08/2008 04:20

Respuesta: Organizacion de un arreglo por un campo?
 
Usando una transformada de Schwartz ( http://en.wikipedia.org/wiki/Schwartzian_transform ):

Código:

#!/usr/bin/perl
use strict;

my @fichero = qw(
    1::carlos::10000::NULL::
    2::pedro::20000::NULL::
    3::marcos::210000::NULL::
    4::david::1000::NULL::
    5::Michael::150000::NULL::
    6::George::17200::NULL::
    7::Javier::18000::NULL::
);

my @ordenado =
    map  { $_->[0]                }
    sort { $a->[1] <=> $b->[1]    }
    map  { [ $_, (split '::')[2] ] }
    @fichero;

print "$_\n" for @ordenado;

__END__


charlygarcia 20/08/2008 15:36

Respuesta: Organizacion de un arreglo por un campo?
 
gracias por la ayuda

la trasnformada es muy buena y la estoy usando bien, muchisisisisimas gracias jferrero
pero esta pregunta se debe a que una cosa es la organizacion por cadena y otra como numero,

Pues 10 es menor que 100 en numeros pero no sabria si "10" es menor que "100" y yo necesito organizar la salida del arreglo por el valor numerico
algo asi como

select * from tabla order by sueldo; //del sql

Esto funcionaria con perl ?

Muchas gracias por la ayuda.

Carlos

jferrero 22/08/2008 08:06

Respuesta: Organizacion de un arreglo por un campo?
 
Si quieres hacer una ordenación alfabética, en lugar de numérica, cambia '<=>' por 'cmp'.


La zona horaria es GMT -6. Ahora son las 13:03.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.