Thread Werte aus Array über zwei Array vergleichen und löschen (17 answers)
Opened by namenlos at 2014-01-21 16:42

payx
 2014-01-22 10:54
#173130 #173130
User since
2006-05-04
564 Artikel
BenutzerIn

user image
Hallo,

hier auch noch ein Vorschlag von mir, der mir einfacher zu sein scheint, als die schon vorgelegten: In der Regel ist das Mittel der Wahl ein Hash, wenn Dubletten entfernt werden sollen. In diesem Fall müssen Dubletten über zwei Dimensionen ermittelt werden, das würde ich mit einem verschachtelten Hash machen.
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/perl

use strict;
use warnings;

my @name = ("heinz", "karl", "Peter", "Anne", "heinz", "Anne");
my @geb = ("20101920", "23011929", "02121915", "06041966","20101920", "07071977");

my %all; # Verschachtelter Hash für den ganzen Datenbestand

for my $i (0..$#name) {
    $all{$name[$i]}->{$geb[$i]} .= "Rechnung Nr. $i ";
}

for my $nam (sort keys %all) {
    for my $geb (sort keys %{$all{$nam}}) {
        print "$nam, $geb: $all{$nam}->{$geb}\n";
    }
}
Output:
Code: (dl )
1
2
3
4
5
Anne, 06041966: Rechnung Nr. 3
Anne, 07071977: Rechnung Nr. 5
Peter, 02121915: Rechnung Nr. 2
heinz, 20101920: Rechnung Nr. 0 Rechnung Nr. 4
karl, 23011929: Rechnung Nr. 1

Anstelle von "Rechnung Nr. $i" müssen natürlich die richtigen Rechnungsdaten eingefügt werden.

HTH
Grüße
payx

Editiert von payx: Kleine Anpassung in Zeile 12: Wenn eine Dublette entfernt wurde, sieht man das jetzt daran, dass mehrere Rechungen kommen.
Last edited: 2014-01-22 12:04:12 +0100 (CET)

View full thread Werte aus Array über zwei Array vergleichen und löschen