Thread Arrays mit Paaren vergleichen
(6 answers)
Opened by pktm at 2010-09-09 23:29
Liebe Alle!
Ich habe hier zwei Arrays, die jeweils Paare aus Zahlen beinhalten. Das eine Array kommt aus einer Datenbank, das andere aus einer Nutzereingabe. Jetzt will a) ich all die Paare, die der Nutzer angegeben hat und die noch nicht in der DB waren, in die DB einfügen und b) alle Paare, die der Nutzer nicht angegeben hat, aus der DB löschen. Dafür muss ich die beiden Arrays vergleichen. Im Moment macht das bei mir untenstehender Code. Geht das auch besser / einfacher? 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 #!/usr/bin/perl use strict; use warnings; use Data::Dumper qw/Dumper/; my @pairs_in_db = ([1,2],[1,9],[3,4],[5,6]); my @pairs_from_somewhere_else = ([1,2],[5,6],[7,18]); my %map = (); foreach my $pair ( @pairs_in_db ) { $map{$pair->[0]}->{$pair->[1]} = 1; } my %keep = (); foreach my $pair ( @pairs_from_somewhere_else ) { if( exists $map{$pair->[0]} && exists $map{$pair->[0]}->{$pair->[1]} ) { printf("<%s, %s> was in db\n", @{$pair}); $keep{$pair->[0]}->{$pair->[1]} = 1; }else{ printf("<%s, %s> has to be inserted into the databse\n", @{$pair}); } } foreach my $pair ( @pairs_in_db ) { unless( exists $keep{$pair->[0]} && exists $keep{$pair->[0]}->{$pair->[1]} ) { printf("<%s, %s> will be removed\n", @{$pair}); } } http://www.intergastro-service.de (mein erstes CMS :) )
|