Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Perl动态多维数组_Arrays_Perl_Hash_Multidimensional Array - Fatal编程技术网

Arrays Perl动态多维数组

Arrays Perl动态多维数组,arrays,perl,hash,multidimensional-array,Arrays,Perl,Hash,Multidimensional Array,在我的Perl程序中,我用于测试以下静态数组定义: my %data = ( 56 => [ { 'Titel' => 'Test 1', 'Subtitel' => 'Untertest 1', 'Beginn' => '00:05', 'Ende' => '00:50' }, { 'Titel' =>

在我的Perl程序中,我用于测试以下静态数组定义:

my %data = (
    56 => [
        {   'Titel'    => 'Test 1',
            'Subtitel' => 'Untertest 1',
            'Beginn'   => '00:05',
            'Ende'     => '00:50'
        },
        {   'Titel'    => 'Test 2',
            'Subtitel' => 'Untertest 2',
            'Beginn'   => '00:50',
            'Ende'     => '01:40'
        }
    ],
    58 => [
        {   'Titel'    => 'Test 3',
            'Subtitel' => 'Untertest 3',
            'Beginn'   => '00:10',
            'Ende'     => '01:50'
        }
    ],
    51 => [
        {   'Titel'    => 'Test 4',
            'Subtitel' => 'Untertest 4',
            'Beginn'   => '00:05',
            'Ende'     => '00:20'
        },
        {   'Titel'    => 'Test 5',
            'Subtitel' => 'Untertest 5',
            'Beginn'   => '00:20',
            'Ende'     => '00:40'
        },
        {   'Titel'    => 'Test 6',
            'Subtitel' => 'Untertest 6',
            'Beginn'   => '00:40',
            'Ende'     => '01:05'
        }
    ],
);
现在我想改变它,从数据库中获取数据。我的select返回5个值:在我的示例中是一个像56、58或51这样的id,以及每个滴度、子滴度、Beginn和Ende的值

如何构建与静态示例中相同的数组构造

提前谢谢!顺致敬意,
Daniel

假设您希望在最后使用它,则需要将hashref推入存储在$data{$id}的arrayref中:

push @{ $data{$id} }, {
    Titel    => $titel,
    Subtitel => $subtitel,
    Beginn   => $beginn,
    Ende     => $ende,
};

可能是这样的。对不起,我已经有一段时间没有做perl了

#!/usr/bin/perl

use Data::Dumper;



sub dataset2struc { 
  my $result = {};
  foreach my $row (@_) {
   my $id = $row->{'id'};
   my $recref = $result->{$id} || ();
   my @rec = @{$recref};
   delete $row->{'id'};
   push(\@rec, $row);
   $result->{$id} = \@rec;
  }
  return $result;
}

my @dataset = ({"id" => 1, "a" => "b"}, {"id" => 2, "a" => "c"}, {"id" => 2, "a" => "d"});
print Dumper(dataset2struc(@dataset));

你可以用几种方法来做。你已经试过做什么了?