Thread aus Liste den Text von IDs zum string
(6 answers)
Opened by Gustl at 2019-12-21 13:03
Das kommt drauf an... Wenn viele Zugriffe auf die @chooseList erfolgen, dann lohnt es sich, die erst einmal in eine passendere Struktur umzuformulieren. Ansonsten gibt es eine Stelle, die sich direkt kürzer schreiben läßt:
Genau für diesen Fall - aus einer Liste wird eine andere gebaut - gibt es die Funktion perlfunc map: Code (perl): (dl
)
my @arrayJoin = map { $_->{text} } @listvalues; Die Umformulierung ist auch gar nicht so lang: Da erzeuge ich in einer Schleife über die Liste ein "Hash of Lists", die direkt auf die geänderte Funktion getStringChoose2 zugeschnitten ist: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 my %chooseHash = (); foreach my $satz (@chooseList) { $chooseHash{$satz->{list}}[$satz->{value}] = $satz->{text}; } sub getStringChoose2 { my ($hash,$ids,$list) = @_; my $string = join ", ", @{$chooseHash{$list}}[@$ids]; return $string || " - "; } say getStringChoose2 ( \%chooseHash, [3,10], 'optionsMemberRolle'); Man muss sich aber im klaren sein, dass dabei Duplikate (die vielleicht sowieso gar nicht vorkommen dürfen) verschwinden: Wenn ich Deine Datenbank um folgenden Eintrag erweitere: ...dann erfasst Dein Code beides und gibt Kassier, Bierbrauer, Volleyballspieler aus, während bei meinem nur Bierbrauer, Volleyballspieler rauskommt. |