2013-12-17 107 views
-1

如何循環訪問我的arrayref並將行數據推送到我有的數組中?for循環fetchall_arrayref添加到數組

這裏是我的代碼,一旦做它沒有一個循環,但我要的是它做的每一行和不知道最好的方法:

my $data2 = $sth->fetchall_arrayref({}); 
my $excludeFirstName = $data2 ->[0]->{EXCL_FRSTNAME}; 
my $excludeLastName = $data2 ->[0]->{EXCL_LASTNAME}; 

    my @excluded; 

    push (@excluded, $excludeFirstName." ".$excludeLastName); 
+1

這聽起來像,在[XY問題(http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)的方式排序,你真的想要獲取兩個數據庫列(「EXCL_FRSTNAME」和「EXCL_LASTNAME」)的連接。如果是這種情況,將SQL查詢更改爲將單個字符串作爲單個列並僅提取該字符串會更有效。 – ThisSuitIsBlackNot

回答

3
my @excluded; 
for my $row (@$data2) { 
    push @excluded, "$row->{EXCL_FRSTNAME} $row->{EXCL_LASTNAME}"; 
} 

或者

my @excluded = map { "$row->{EXCL_FRSTNAME} $row->{EXCL_LASTNAME}" } @$data2; 

如果您不需要$data2其他任何東西,

my @excluded; 
while (my $row = $sth->fetch_hashref()) { 
    push @excluded, "$row->{EXCL_FRSTNAME} $row->{EXCL_LASTNAME}"; 
} 

或者

my $sql = 'SELECT CONCAT(EXCL_FRSTNAME, EXCL_LASTNAME) FROM ...'; 
my $excluded = $dbh->selectcol_arrayref($sql);