[Cascavel-pm] Sort em array de hash.

Alceu R. de Freitas Jr. glasswalk3r em yahoo.com.br
Terça Dezembro 6 09:02:13 PST 2005


Eu vou dar uma resposta, mas acho que você deveria
explicar daonde está obtendo esses dados... isso pode
ajudar ou atrapalhar.

Digo isso porque seria mais fácil ter os dados
ordenados na criação do array de hashes. Você
posiciona os ítens dentro do array dependendo do valor
de ppd-model. Se você tiver que fazer isso várias
vezes, vai ter que copiar valores para um novo array e
fazer a referência novamente...

Como o nome de modelo possui espaços, você não vai
poder usar ele como chave num hash. Então você teria
que extrair todos os modelos para a chave Hitachi, por
exemplo, e colocar num array. Com o array criado, você
usar @models = sort(@models).

Depois que isso foi feito aí você monta sua estrutura
de dados. No primeiro hash anônimo dentro do array de
Hitachi você colocar a primeira posição do array
@models.

Isso é só uma idéia. Se você recuperar os dados de um
banco de dados qualquer você pode não precisar criar
esse array intermediário (models). Se você não usa um
banco de dados talvez fosse uma boa idéia usar um. :-)
É mais fácil lidar com esses relacionamentos usando
SQL do que fazendo operações com referências. 

Outra coisa que me ocorreu é, se você não tem
alterações nos modelos com frequência (adição ou
remoção de modelos) você pode criar um código numérico
e atribuir ele a um modelo de acordo com a ordem que
você quiser. Para cada ítem adicionado você
provavelmente teria que recalcular todos (ou parte de)
os ID novamente mas se isso não acontecer com
frequência pode valer a pena.

[]'s
Alceu


--- Rod Za <rodzadra em yahoo.com> escreveu:

> Minha estrutura est� abaixo, o que eu estou
> tentando fazer � colocar por ordem crescente o
> campo "ppd_model" para cada chave (Hitachi, PCPI):
> 
> <valores>
> $VAR1 = {
>           'Hitachi' => [
>                          {
>                            'ppd_lang' => 'en',
>                            'ppd_driver' =>
> 'DDP_70_with_MicroPress.ppd.gz',
>                            'ppd_model' => 'Hitachi
> DDP 70 Foomatic/Postscript (recommended)'
>                          }
>                        ],
>           'PCPI' => [
>                       {
>                         'ppd_lang' => 'en',
>                         'ppd_driver' =>
> 'PCPI/1030-gimp-print.ppd.gz',
>                         'ppd_model' => 'PCPI 1030
> Foomatic/gimp-print'
>                       },
>                       {
>                         'ppd_lang' => 'en',
>                         'ppd_driver' =>
> 'PCPI/1030-laserjet.ppd.gz',
>                         'ppd_model' => 'PCPI 1030
> Foomatic/laserjet (recommended)'
>                       }
>                     ],
> }
> </valores>


Alceu Rodrigues de Freitas Junior
--------------------------------------
glasswalk3r em yahoo.com.br
http://www.imortais.cjb.net
-----------------------------------------------------------------------
A well-used door needs no oil on its hinges.
A swift-flowing stream does not grow stagnant.
Neither sound nor thoughts can travel through a vacuum.
Software rots if not used.
These are great mysteries -- The Tao Of Programming, 5.1


	



	
		
_______________________________________________________ 
Yahoo! doce lar. Faça do Yahoo! sua homepage. 
http://br.yahoo.com/homepageset.html 



Mais detalhes sobre a lista de discussão Cascavel-pm