簡體   English   中英

在Perl中,如何將從數據庫中讀取的數組轉換為哈希?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM