Daten aus einem array korrigieren
Bernhard
- cgi
Hallo,
die Lösung für mein Problem ist bestimmt ganz einfach, aber ich stehe
total auf dem Schlauch.
Ich habe ein Array mit folgendem Inhalt:
Name1&1000&10&1.0
Name2&2000&20&1.0
Name3&1500&15&1.3
Name4&5000&10&1.4
Name5&2300&12&1.4
.
.
.
Jetzt möchte ich, dass die Zahlen des zweiten Elementes addiert werden, wenn das vierte Element gleich ist und in einem neuen Array
eingelesen werden.
Also so:
3000&1.0
1500&1.3
7300&1.4
Die anderen Elemente sind für die weitere Berechnung uninteressant.
Schon mal vielen Dank im voraus !
Bernhard
Hi,
Jetzt möchte ich, dass die Zahlen des zweiten Elementes addiert werden, wenn das vierte Element gleich ist und in einem neuen Array
eingelesen werden.
tut's auch ein Hash? Ich würde das etwa folgendermaßen machen (ungetestet):
my %ergebnis;
foreach (@lines) {
chomp; # wenn Du die Daten aus einer Datei ausgelesen hast (z.B), haben sie alle noch ein Newline am Ende
my @temp = split(/&/, $_);
$ergebnis{$temp[3]) += $ergebnis{$temp[1]};
}
foreach (keys %ergebnis) {
print $_, ': ', $ergebnis{$_}, "\n";
}
Cheatah
hi!
Ich habe ein Array mit folgendem Inhalt:
Name1&1000&10&1.0
Name2&2000&20&1.0
Name3&1500&15&1.3
Name4&5000&10&1.4
Name5&2300&12&1.4
.
Jetzt möchte ich, dass die Zahlen des zweiten Elementes addiert werden, wenn das vierte Element
gleich ist und in einem neuen Array eingelesen werden.
Man verwende ein Hash und das vierte Element als Schlüssel.
=== cut ===
my %hash;
for (@array)
{
my (undef, $value, undef, $key) = split /&/;
$hash{$key} += $value;
}
=== cut ===
Um aus dem Hash eine Liste zu machen:
=== cut ===
for (keys %hash)
{
push @newarray, "$hash{$_}&$_"
}
=== cut ===
bye, Frank!