Affichage d'un tableau de hash

Le
kurtz le pirate
Bonjour,

J'ai mon AoH :

my @aoh_Attribute = (
{ id_Attribute => 25, id_Attribute_group => 4, position => 0, },
{ id_Attribute => 138, id_Attribute_group => 4, position => 12, },
{ id_Attribute => 126, id_Attribute_group => 4, position => 1, },
{ id_Attribute => 52, id_Attribute_group => 4, position => 11, },
{ id_Attribute => 51, id_Attribute_group => 4, position => 10, },
{ id_Attribute => 50, id_Attribute_group => 4, position => 9, },
{ id_Attribute => 49, id_Attribute_group => 4, position => 8, },
{ id_Attribute => 48, id_Attribute_group => 4, position => 7, },
{ id_Attribute => 26, id_Attribute_group => 4, position => 2, },
{ id_Attribute => 27, id_Attribute_group => 4, position => 3, },
{ id_Attribute => 29, id_Attribute_group => 4, position => 4, },
{ id_Attribute => 30, id_Attribute_group => 4, position => 5, },
{ id_Attribute => 247, id_Attribute_group => 4, position => 6, },
{ id_Attribute => 144, id_Attribute_group => 4, position => 13, },
);


Que j'affiche avec ce code trouvé sur perldsc.
for my $href ( @aoh_Attribute ) {
print "{ ";
for my $role ( keys %$href ) {
print "$role=$href->{$role}t";
}
print "}";
}
print "";


J'obtiens :
{ position=0 id_Attribute_group=4 id_Attribute% }
{ position id_Attribute_group=4 id_Attribute8 }
{ position=1 id_Attribute_group=4 id_Attribute6 }
{ position id_Attribute_group=4 id_AttributeR }
{ position id_Attribute_group=4 id_AttributeQ }
{ position=9 id_Attribute_group=4 id_AttributeP }
{ position=8 id_Attribute_group=4 id_AttributeI }
{ position=7 id_Attribute_group=4 id_AttributeH }
{ position=2 id_Attribute_group=4 id_Attribute& }
{ position=3 id_Attribute_group=4 id_Attribute' }
{ position=4 id_Attribute_group=4 id_Attribute) }
{ position=5 id_Attribute_group=4 id_Attribute0 }
{ position=6 id_Attribute_group=4 id_Attribute$7 }
{ position id_Attribute_group=4 id_Attribute4 }



C'est peut être normal, mais pourquoi l'ordre des clés n'est pas le même
que celui dans la déclaration du AoH ?


Merci

--
kurtz le pirate
compagnie de la banquise
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Marc SCHAEFER
Le #26450859
kurtz le pirate
C'est peut être normal, mais pourquoi l'ordre des clés n'est pas le même
que celui dans la déclaration du AoH ?

Perl propose des tableaux de hâchage et non pas des tableaux associatifs
ordonnés.
L'ordre des clés est donc dépendant de l'implémentation et des
clés qui ont été insérées. Comme p.ex. dans un fichier DBM indexé
(cf tie).
Si un ordre est indispensable, alors énumérer par ordre d'un tableau
de clés, ou ajouter un attribut de numéro (order) et trier avec la version
à argument du sort:
foreach my $t (sort { $a <=> $b } keys %hash) {
}
en remplaçant $a <=> $b par exemple par
$hash{$a}->{'order'} <=> $hash{$b}->{'order'}
kurtz le pirate
Le #26450910
Le 06/11/2017 à 14:00, Marc SCHAEFER a écrit :
Perl propose des tableaux de hâchage et non pas des tableaux associatifs
ordonnés.
L'ordre des clés est donc dépendant de l'implémentation et des
clés qui ont été insérées. Comme p.ex. dans un fichier DBM indexé
(cf tie).

Donc c'est /normal/
Merci.

--
kurtz le pirate
compagnie de la banquise
Publicité
Poster une réponse
Anonyme