Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.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 从2d到1d的Perl数组转换_Arrays_Perl_Data Conversion - Fatal编程技术网

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";