Arrays 从2d到1d的Perl数组转换
假设我有这样的二维数组Arrays 从2d到1d的Perl数组转换,arrays,perl,data-conversion,Arrays,Perl,Data Conversion,假设我有这样的二维数组 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[]; 但它显然不起作用 您
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[];
但它显然不起作用 您对新
@B
的描述是@A
已经包含的内容。如果你的意思是我认为你的意思,那么你可以用一个简单的地图:
my @B = map @$_, @A;
迭代forloop并将值存储到2d数组中
for($i='0'; $i<=$#A; $i++)
{
push(@{$B[$i]}, @{$A[$i]} );
}
这可能对你的问题有帮助。我认为你不是指问题中的方括号,因为如果你这样做了,那么你想要的@B
实际上与@A
相同。是的,你是对的,一定是迟到了。我可能会说,以某种方式使用@A设置@B,以便只使用@B=[“text1”、“text2”、“text3”],你似乎对自己想要的东西感到困惑。您所描述的@B
中需要的不是一维数组。你想要的就是你在@A
中已经拥有的东西。也许您不确定数组在Perl中是如何工作的?谢谢,如果我也想:@C=[“text4”、“text5”、“text6”]只使用@A怎么办?
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";