Perl数组从2d转换为1d

时间:2014-11-15 03:58:21

标签: arrays perl data-conversion

说我有这样的二维阵列A,

my @A;

$A[0][0]="text1";
$A[0][1]="text2";
$A[0][2]="text3";
$A[1][0]="text4";
$A[1][1]="text5";
$A[1][2]="text6";

我想将它转换为另一个数组B,以便

$B[0]将包含(["text1","text2","text3"])

$B[1]将包含(["text4","text5","text6"])

我试过了

my @B = $A[];

但它显然不起作用。

2 个答案:

答案 0 :(得分:1)

您对新@B的说明是@A已包含的内容。如果你的意思是我认为你的意思,那么你可以用简单的map

来做到这一点
my @B = map @$_, @A;

答案 1 :(得分:0)

my @A;
$A[0][0]="text1";
$A[0][1]="text2";
$A[0][2]="text3";
$A[1][0]="text4";
$A[1][1]="text5";
$A[1][2]="text6";

迭代for循环并将值存储到2d数组

for($i='0'; $i<=$#A; $i++)
{
    push(@{$B[$i]}, @{$A[$i]} );
}

输出:

print '$B[0][0]==>', $B[0][0], "\n";
print '$B[0][1]==>', $B[0][1], "\n";
print '$B[0][2]==>', $B[0][2], "\n";
print '$B[1][0]==>', $B[1][0], "\n";
print '$B[1][1]==>', $B[1][1], "\n";
print '$B[1][2]==>', $B[1][2], "\n";

这可能对您的问题有帮助。