[英]In Perl, how can I convert arrays I read from database into a hash?
基本上,我正在查詢數據庫,我需要將結果數組轉換為哈希值。
我按如下方式查詢數據庫
my $sth = $dbw->prepare($sql);
while (@rows = $sth->fetchrow_array()) {
...
...
}
現在,我需要創建一個散列,使得rows [0]是鍵,行[1],行[2],行[3]是值。 對於每個讀取的記錄,必須生成新的散列鍵並設置相應的值
如果我的表看起來像
abc 2.3 2.4 2.5
def 3.2 3.3 3.4
ijk 4.5 4.6 4.7
讀取第一條記錄,abc是鍵,數字是值...等等
您還可以查看selectall_hashref 。
$hash_ref = $dbh->selectall_hashref($statement, $key_field);
my %hash;
while (my @fields = $sth->fetchrow_array()) {
$hash{$fields[0]} = [ @fields[1..$#fields] ];
}
my %mealsizes;
my $sth = $dbw->prepare($sql);
while (@columns = $sth->fetchrow_array()) {
my $dayname = shift @columns;
$mealsizes{$dayname} = [@columns];
}
以下是構建和使用arrayref的示意圖。
#!/usr/bin/perl
#
use strict;
use warnings;
my %h;
while (<DATA>) {
my @columns = split;
my $k = shift @columns;
$h{$k} = [@columns];
}
for my $k (sort keys %h) {
print "$k => ", join(', ', @{$h{$k}}), "\n";
}
__DATA__
abc 2.3 2.4 2.5
def 3.2 3.3 3.4
ijk 4.5 4.6 4.7
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.