Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.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 - Fatal编程技术网

Arrays 如何在perl中访问哈希数组中的数组?

Arrays 如何在perl中访问哈希数组中的数组?,arrays,perl,hash,Arrays,Perl,Hash,我有一个哈希数组,其中一个哈希值是一个数组。 ->我把@title推到part 至于印刷品, ->我将每本书{part}放在一个临时数组中,以访问title的每个元素,但它只打印第一个元素 我无法访问数组书中标题的所有元素 @books = (); @title = (1,2,3,4,5); push @books,{subject=>"hello" , part =>@title }; for($i=0;$i<scalar(@books);++$i) { print

我有一个哈希数组,其中一个哈希值是一个数组。 ->我把@title推到part 至于印刷品, ->我将每本书{part}放在一个临时数组中,以访问title的每个元素,但它只打印第一个元素 我无法访问数组书中标题的所有元素

@books = ();
@title = (1,2,3,4,5);
push @books,{subject=>"hello" , part =>@title };
for($i=0;$i<scalar(@books);++$i)
{
    print $books[$i]{subject};

    @temp = $books[$i]{part};
    for($j=0;$j<scalar(@temp);++$j)
    {
        print $temp[$j]; #this print just first element "1"
    }
}

这里的问题是您在@books数组上推送的哈希引用没有正确创建

您正在创建的哈希引用如下所示:

 {  'subject' => 'hello',
    'part'    => 1,
    '2'       => 3,
    '4'       => 5,
 }
{  'subject' => 'hello',
   'part' => [
        1,
        2,
        3,
        4,
        5,
    ],
}
当您可能希望它看起来像这样时:

 {  'subject' => 'hello',
    'part'    => 1,
    '2'       => 3,
    '4'       => 5,
 }
{  'subject' => 'hello',
   'part' => [
        1,
        2,
        3,
        4,
        5,
    ],
}
这是因为哈希和数组中的值必须是标量值。要正确创建哈希引用以需要在键部分下存储对@title数组的引用,请使用\:

注意:这也意味着,当您想要将部分密钥提取到@temp数组中时,您需要取消引用它,因为它是一个数组引用:

@temp = @{ $books[$i]{part} };

这里的问题是您在@books数组上推送的哈希引用没有正确创建

您正在创建的哈希引用如下所示:

 {  'subject' => 'hello',
    'part'    => 1,
    '2'       => 3,
    '4'       => 5,
 }
{  'subject' => 'hello',
   'part' => [
        1,
        2,
        3,
        4,
        5,
    ],
}
当您可能希望它看起来像这样时:

 {  'subject' => 'hello',
    'part'    => 1,
    '2'       => 3,
    '4'       => 5,
 }
{  'subject' => 'hello',
   'part' => [
        1,
        2,
        3,
        4,
        5,
    ],
}
这是因为哈希和数组中的值必须是标量值。要正确创建哈希引用以需要在键部分下存储对@title数组的引用,请使用\:

注意:这也意味着,当您想要将部分密钥提取到@temp数组中时,您需要取消引用它,因为它是一个数组引用:

@temp = @{ $books[$i]{part} };

另请参见:。还有一个问题:对于每本书,它都会打印最后一本书的信息。另外:。还有一个问题:对于每本书,它都会打印最后一本书的信息