Arrays 使用Perl将数组元素推送到数组中
使用Perl,我试图将一个数组的元素推送到另一个数组,而不是整个数组。但我没有达到我的目标 我试过这个:Arrays 使用Perl将数组元素推送到数组中,arrays,perl,push,Arrays,Perl,Push,使用Perl,我试图将一个数组的元素推送到另一个数组,而不是整个数组。但我没有达到我的目标 我试过这个: push @tmp_entities_all, @tmp_entities; 但是我得到了整个小数组作为大数组中的一个元素 然后我尝试了一个循环: for (@tmp_entities) {push @tmp_entities_all, $_;} 但是同样的结果,整个@tmp_实体显示为一个元素,这是我不想要的 我需要数组中的一维,而不是数组的数组!!推之前我应该投些什么吗?或者问题出在
push @tmp_entities_all, @tmp_entities;
但是我得到了整个小数组作为大数组中的一个元素
然后我尝试了一个循环:
for (@tmp_entities) {push @tmp_entities_all, $_;}
但是同样的结果,整个@tmp_实体
显示为一个元素,这是我不想要的
我需要数组中的一维,而不是数组的数组!!推之前我应该投些什么吗?或者问题出在哪里
Thanx很多。在您的评论中,很明显,
@tmp\u entities
只包含一个元素,即对元素的数组引用,您希望这些元素是@tmp\u entities
的元素
因此,您可能使用数组引用来声明数组,而不是使用一组元素
线路
push @tmp_entities_all, @tmp_entities;
绝对适用于普通数组
在你的情况下,你可以试试
push @tmp_entities_all, $tmp_entities[0];
或者您只需尝试使用其值初始化数组,如
my @tmp_entities = ( 1, 2, 3 ); # initialize array with 3 elements of type int
而不是
my @tmp_entities = [ 1, 2, 3 ]; # initialize array with 1 element that is an array reference with 3 elements of type int
我知道,情况就是这样,因为这就是为什么for循环示例使用
@$\uu
;D(在这种情况下,它相当于push@tmp\u entities\u all,$tmp\u entities[0];
。这两种方法都应该有效。通过use Data::Dumper在push
之后尝试转储您的@tmp\u实体\u all
;打印转储程序(\@tmp\u entities\u all)编码>并在问题中包含输出。[{'type'=>'month',attr'=>{}],{'type'=>'day',attr'=>{},{'type'=>'day','attr'=>{}}],…试试这一行perl-e'@a=(1,2,3,4);@b=(5,6,7,8);按一下@a,@b;打印“@a\n”
正如您所看到的,您所问的应该是什么循环现在正在工作:我将它改为@$uu而不是简单的$u..但是另一种方法更有效,并且应该以某种方式工作..您的数组@tmp_entities包含一个arrayreference,即保存元素。也许您定义的数组是@tmp_entities=[1,2,3]…但是你应该做@tmp_entities=(1,2,3)…这就是为什么你的循环使用@u$,你的推送在第一次尝试将数组“作为一个元素”推送…是的,是这样的..thanx all:))另一种方法可以是使用:my@tmp_entities=qw/1 2 3/;
。