Thread Array auslesen (22 answers)
Opened by mteffenh at 2010-01-29 11:58

topeg
 2010-01-29 16:43
#131534 #131534
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
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.

View full thread Array auslesen