Thread Array auslesen
(22 answers)
Opened by mteffenh at 2010-01-29 11:58
So könnte man es machen:
Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 #!/usr/bin/perl use strict; use warnings; # die Daten my @PTage=qw(1264633200 1264719600 1264633200 1264719600); my @WErt=qw(2 2 3 3); my @Titel=qw(A A B B); # reorganisieren: my %liste=(); # alle Werte durch gehen for my $pos (0..$#PTage) { my $titel=$Titel[$pos]; my $wert=$WErt[$pos]; my $ptage=$PTage[$pos]; # wenn der eintrag im Hash noch nicht existiert, # dann anlegen unless(exists($liste{$titel})) { # als Wert wird ein anonymer Hash eingefügt, # der die nötigen Einträge enthält $liste{$titel}={werte=>[], ptage=>[]} } # die Werte hinzufügen push(@{$liste{$titel}->{werte}},$wert); push(@{$liste{$titel}->{ptage}},$ptage); } render_daten(%liste); ######################################################################## sub render_daten { my %liste=@_; # die Schlüssel (Titel) sortieren # und einzeln durch gehen for my $titel (sort keys(%liste)) { my @werte=@{$liste{$titel}->{werte}}; my @ptage=@{$liste{$titel}->{ptage}}; # mach was mit den Werten: printf("%s: %s %s\n",$titel, join(' ',@ptage), join(', ',@werte)); } } Es ist wahrscheinlich sinnvoll die Daten nicht erst in drei Arrays zwischen zu speichern sondern direkt in den Hash zu packen. Das kannst solltest du in der Schleife können, in der du die Daten aus der Datenbank ließt. |