in reply to Re^4: Keeping Unique Elements in Array!
in thread Keeping Unique Elements in Array!

Ah, I see why you were thinking of uniqueness... Maybe something like this, combining the idea of max() and uniqueness via hash:

... # group arrays by person+id my %persons; for my $aref (@$array_ref_x) { my $uniq_key = "$aref->[0] $aref->[1]"; push @{$persons{$uniq_key}}, $aref; } my $all_val = []; for my $aref_person (values %persons) { push @$all_val, my $tmp = []; for my $aref (@$aref_person) { @$tmp[0..1] = @$aref[0..1]; for my $i (2..$#$aref) { $tmp->[$i] = 0 unless defined $tmp->[$i]; $tmp->[$i] = $aref->[$i] if $aref->[$i] > $tmp->[$i]; } } } print Dumper $all_val; __END__ $VAR1 = [ [ 'John Day', '456789', 2011, '50.00', 817, 4, 22, 90 ], [ 'ALICE WONDER', '9876543', 2009, '15.00', 717, 20, 5, 11 ], [ 'Mary Ann', '123988', 2002, '10.00', 119, 5, 3, 0 ] ];

Replies are listed 'Best First'.
Re^6: Keeping Unique Elements in Array!
by Anonymous Monk on May 01, 2009 at 20:08 UTC
    Yes, that's what I am trying to do, thanks, this is actually coming from a query result of two database tables, and before combining these two values I have to make sure the second array_ref will have the same number of elements than the first one. I am losing my mind on this one since I can't do a simple join on these tables. But this will clear some of my problems for sure! Thanks for showing me a clear way of doing this!