- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用下面显示的数据按 countryid 对我的结果进行分组。
my @test = ();
my $st = qq[
SELECT id,countryID,abbrev
FROM myTable
];
my $q = $data->prepare($st);
$q->execute() or query_error($st);
while ( my $result = $q->fetchrow_hashref ) {
push @test, $result;
}
使用 fetchrow_hashref 显示结果没有问题
use Data::Dumper;
print STDERR Dumper(\@test);
返回
$VAR1 = [
{ 'id' => '1',
'countryID' => '1',
'title' => 'Title 1',
'abbrev' => 't1'
},
{ 'id' => '2',
'countryID' => '2',
'title' => 'Title 2',
'abbrev' => 't2'
},
{ 'id' => '3',
'countryID' => '3',
'title' => 'Title 3',
'abbrev' => 't3'
},
{ 'id' => '4',
'countryID' => '1',
'title' => 'Title 4',
'abbrev' => 't4'
}
];
我想按国家分组,如下所示。
$VAR1 = [
'countries' => {
'1' => [
{ 'id' => '1',
'title' => 'Title 1',
'abbrev' => 't1'
},
{ 'id' => '4',
'title' => 'Title 4',
'abbrev' => 't4'
}
],
'2' => [
{ 'id' => '2',
'title' => 'Title 2',
'abbrev' => 't2'
}
],
'3' => [
{ 'id' => '3',
'title' => 'Title 3',
'abbrev' => 't3'
}
]
}
];
我怎样才能让它在 while 循环中工作?
最佳答案
忽略样本数据结构中的错误,您基本上是在寻找将散列数组的形式转换为散列数组的散列的散列。设置好初始数据结构后,您可以执行以下操作来创建新的嵌套数据结构:
for my $href ( @test ) {
my $id = $href->{countryID};
delete $href->{countryID};
push @{ $test2->{countries}{$id} }, $href;
}
迭代数组 @test
的每个元素,它基本上是一个散列引用数组。创建一个变量 $id
,它将从散列中捕获 countryID
值。我们从散列引用中删除它,然后将该散列引用分配给我们新的嵌套数据结构,该结构将 countries
作为第一级 key
和 $id
作为二级键。
我们使用 push
语法来创建我们的此类引用数组。
注意:如thb所述在评论中,这确实破坏了您的原始数据结构。如果您想保留原始结构,请将代码修改为以下内容:
for my $href ( @test ) {
my $copy = { %$href };
my $id = $copy->{countryID};
delete $copy->{countryID};
push @{ $test2->{countries}{$id} }, $copy;
}
关于arrays - perl 组使用 fetchrow_hashref 生成散列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25840387/
我想知道是否有人可以帮助我解决旧 Perl 代码的令人沮丧的问题。我的实际任务是将旧的 Perl 脚本从版本 5.10.1 迁移到 5.18.2。 所以我已经解决了脚本的简单问题,例如错误的调用、错误
我正在尝试从 MySQL 数据库中获取信息,然后我将在 perl 中对其进行操作: use strict; use DBI; my $dbh_m= DBI->connect("dbi:mysql:Po
我真的需要你的帮助来理解下面的 perl 示例代码: #!/usr/bin/perl # Hashtest use strict; use DBI; use DBIx::Log4perl; use D
我想使用下面显示的数据按 countryid 对我的结果进行分组。 my @test = (); my $st = qq[ SELECT id,countryID,abbrev F
我无法使用以下代码正确检索输出。请帮我整理一下。 我得到不同的输出以在 MySQL 和 Perl 中运行。 截至目前,当我使用 Dumper 时它返回 undef。但我希望它显示为空。 $re
我有一些看起来像这样的东西: my $report = new ReportGenerator; #custom object my $dbh = $dbc->prepare('SELECT * FR
我知道: $sth->fetchrow_hashref返回从数据库中获取的行的 hashref, $sth->fetchrow_arrayref返回从数据库中获取的行的数组引用,和 $sth->fet
我是一名优秀的程序员,十分优秀!