Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
6112 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  tirer un hash de hash

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

tirer un hash de hash

n°1777812
donny3
Posté le 26-08-2008 à 16:24:30  profilanswer
 

salut,
 
Je dispose d'un hash de hash que j'alimente à partir d'une requête;
A la sortie de ma requête j'ai mes lignes trier .
 
Pays1
Pays2
Pays3
 
donc je pense que mon hash a été alimenter de cette maniere, vu que j'ai inserer les lignes dans cette ordre
et donc je devrais avoir cela :
 

Citation :

%montablo = (
    Pays1=> {
        name=> "Iceland"
    },
    Pays2=> {
        name => "USA"
    },
    Pays3=> {
        name=> "France"
    },
);


Je les insere comme cela dans mon hash, mais le problème est que quand je fais un select dans mon hash
 
Le problemes est que lorsque j'affiche les pays de mon tableaux
j'ai ceci en sortie :
 

Citation :

Pays2
Pays1
Pays3


 
et non pas  
 

Citation :

Pays1
Pays2
Pays3


 
je comprend pas;
est-ce possible de le trier ?
 
merci de votre aide

mood
Publicité
Posté le 26-08-2008 à 16:24:30  profilanswer
 

n°1777884
Taz
bisounours-codeur
Posté le 26-08-2008 à 17:57:54  profilanswer
 

Les hashs ne sont pas des collections ordonnées.
http://faq.perl.org/perlfaq4.html#How_do_I_sort_a_hash

n°1778084
burgergold
5$? va chez l'diable!
Posté le 27-08-2008 à 01:06:39  profilanswer
 

Code :
  1. for my $key (sort(keys(%hash))) {
  2.   print $hash{$key} . "\n";
  3. }


 
mais question: pourquoi est-ce que tu mets ca dans un hash?

n°1778108
donny3
Posté le 27-08-2008 à 08:22:39  profilanswer
 

au depart je l'avais mis dans un hash de hash , je pensai que j'allais avoir plus de groupe.
La je l'ai mis dans un hash tout simple :

Code :
  1. %montablo = (
  2.     Pays1=> "Iceland"
  3.     ,
  4.     Pays2=>  "USA"
  5.     },
  6.     Pays3=>  "France"
  7.    
  8. );


 
A ta question : tu voulais que je le mette dans un array ?

n°1778124
Taz
bisounours-codeur
Posté le 27-08-2008 à 09:25:37  profilanswer
 

Si l'ordre a de l'importance à un autre moment qu'à l'affichage, alors oui, n'utilise pas un hash.

n°1778133
donny3
Posté le 27-08-2008 à 09:43:17  profilanswer
 

apparament en mettant un sort,j'ai bien pays1 qui sort avant pays2 puis pays3.
Le sort tri les clés par ordre alphabetique c est bien cela ?

n°1778139
anapajari
s/travail/glanding on hfr/gs;
Posté le 27-08-2008 à 09:53:19  profilanswer
 

par défaut sort utilise cmp pour sa comparaison, donc oui il trie par ordre alphabétique.
 
Mas comme dit plus haut et  vu la tête de tes clés, un array te serait à mon avis bien plus utile.


---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1778167
donny3
Posté le 27-08-2008 à 11:02:38  profilanswer
 

le truc c'est qu'un array pour moi,c'est quelque chose dans ce genre la :
@array (valeur1,valeur2,valeur3) et ce n'est pas mon cas

n°1778202
burgergold
5$? va chez l'diable!
Posté le 27-08-2008 à 11:59:47  profilanswer
 

donny3 a écrit :

le truc c'est qu'un array pour moi,c'est quelque chose dans ce genre la :
@array (valeur1,valeur2,valeur3) et ce n'est pas mon cas


 
 
et pourquoi?
 

Code :
  1. # Pays1
  2. push(@pays, 'Iceland');
  3. # Pays 2
  4. push(@pays, 'USA');
  5. # Pays 3
  6. push(@pays, 'France');
  7. for my $pays (@pays) {
  8.   print $pays . "\n";
  9. }
  10. # ou encore
  11. for (my $i = 0; $i < @pays, $i++) {
  12.   print 'Pays' . $i+1 . '=' . $pays[$i] . "\n";
  13. }

n°1778441
donny3
Posté le 27-08-2008 à 17:14:48  profilanswer
 

parceque j'ai besoin d'avoir le pays1 ,pays2 ....... car un pays peut contenir plusieurs pays

mood
Publicité
Posté le 27-08-2008 à 17:14:48  profilanswer
 

n°1778462
anapajari
s/travail/glanding on hfr/gs;
Posté le 27-08-2008 à 17:28:31  profilanswer
 

donny3 a écrit :

parceque j'ai besoin d'avoir le pays1 ,pays2 ....... car un pays peut contenir plusieurs pays


 [:cerveau heink]

 

Quoi qu'il en soit rien ne t'empeche de faire un tableau mixant valeurs

Code :
  1. push(@pays, ['England', 'Iceland', 'Madagascar']);
  2. push(@pays, ['USA', 'Russia']);
  3. push(@pays, 'France');


et pour afficher tout ça, un bon coup de :

Code :
  1. map {print ((ref $_ eq 'ARRAY' ? join ' ', @{$_}: $_).' ');} @pays;


Message édité par anapajari le 27-08-2008 à 17:28:51

---------------
Software and cathedrals are much the same - first we build them, then we pray.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  tirer un hash de hash

 

Sujets relatifs
Tirer une point aléatoire dans cercle sur une sphèreComparaison de valeurs dans deux Hash
[perl] table hash multidimensionnelfonction avec table hash en parametre
[Java] Générer un hash MD5Hash sha256 en PHP4 ?
Passer un tableau ou une hash Perl à JavaScriptHash fichier pour comparaison
sort hashMettre un tableau dans une hash ?
Plus de sujets relatifs à : tirer un hash de hash


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)