Schrift
[thread]11388[/thread]

Array von Hashes



<< >> 4 Einträge, 1 Seite
RalphFFM
 2008-02-29 22:51
#106530 #106530
User since
2006-11-16
258 Artikel
BenutzerIn
[Homepage] [default_avatar]
Nabend,
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
while (my @arrTemp = $sth->fetchrow_array)
{
        push @arrTemp2, {
                hunde  => $arrTemp[0],
                katzen => $arrTemp[1],
                kamele => $arrTemp[2],
                ratten => $arrTemp[3],
                maeuse => $arrTemp[4]
        };  # arrTemp2 ist ein Array von Hashes
}

sieht finde ich irgendwie arg unschön / umständlich aus. Kann man das irgendwie schöner schreiben?
(So, daß das selbe Ergebnis-Array @arrTemp2 rauskommt?)
Die Spaltennamen der Tabelle (fetchrow-array) haben dieselben Namen wie die Tiere-Keys oben in den Hashs.

Danke! + Gruß, Ralph
renee
 2008-02-29 22:54
#106531 #106531
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code (perl): (dl )
1
2
3
4
5
6
my @keys = qw(hunde katzen kamele ratten maeuse);
while( my $hashref = $sth->fetchrow_hashref ){
    my %hash;
    @hash{ @keys } = @{ $hashref }{@keys};
    push @arrTemp2, \%hash;
}
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Ronnie
 2008-02-29 22:58
#106532 #106532
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Code (perl): (dl )
1
2
3
my @keys = qw/hunde katzen kamele ratten maeuse/;
my $href = { map { $keys[$_], $arrTemp[$_] } 0..$#keys };
push @arrTemp2, $href;

EDIT: Den Hash-Slice vergesse ich immer wieder, ist wahrscheinlich deutlich effektiver schneller als per map. In Perl6 bekommen wir dafür ja den zip-Operator.
murphy
 2008-03-01 01:30
#106538 #106538
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Es geht auch noch so:
Code (perl): (dl )
1
2
3
while (my @row = $sth->fetchrow_array) {
  push @arrTemp2, do { my %h; @h{qw/hunde katzen kamele ratten maeuse/} = @row; \%h }
}
When C++ is your hammer, every problem looks like your thumb.
<< >> 4 Einträge, 1 Seite



View all threads created 2008-02-29 22:51.