從技術上講,在Perl中不存在多維數組,但是您可以在Perl中使用單維數組來操作,就好像它們具有多個維度一樣。在Perl中,如何將二維數組串起來?
在Perl中,數組中的每個元素可以是對另一個數組的引用,但在語法上它們看起來像是一個二維數組。
我想在Perl中將2維整數數組轉換爲字符串。我宣佈2維整數數組如下:
my @array1=[[1,2,3],[1,2,3],[1,2,3]];
OR
my @array2=((1,2,3),(1,2,3),(1,2,3));
現在我需要創建一個子程序,將返回字符串作爲"{{1,2,3},{1,2,3},{1,2,3}}"
。我曾嘗試以下子程序:
sub TwoDArrayOutputString {
my ($outputs)= @_;
my $finaloutput="{";
foreach my $output ($outputs) {
foreach my $out (@$output) {
$finaloutput.="{"."}";
#$finaloutput.="{".join(',',@output)."}";
}
$finaloutput.=",";
}
$finaloutput.="}";
return $finaloutput;
}
sub TwoDArrayOutputString1 {
my ($outputs)= @_;
if (ref($outputs) eq "REF") {$outputs = ${$outputs};}
my $finaloutput="{";
foreach my $output ($outputs) {
foreach my $out (@$output) {
$finaloutput.="{"."}";
#$finaloutput.="{".join(',',@output)."}";
}
$finaloutput.=",";
}
$finaloutput.="}";
return $finaloutput;
}
sub TwoDArrayOutputString2{
my ($array)= @_;
my $finaloutput="{";
for my $row (0..$#array) {
my @columns = @{ $array[$row] }; # Dereferencing my array reference
$finaloutput.="{";
for my $column (@columns) {
$finaloutput.=$column.",";
}
$finaloutput=substr($finaloutput,0,length($finaloutput)-1);
$finaloutput.="}".",";
}
$finaloutput=substr($finaloutput,0,length($finaloutput)-1);
$finaloutput.="}";
return $finaloutput;
}
print TwoDArrayOutputString(@array1)."\n";
print TwoDArrayOutputString1(@array1)."\n";
print TwoDArrayOutputString2(@array1)."\n"."\n"."\n"."\n";
print TwoDArrayOutputString(@array2)."\n";
print TwoDArrayOutputString1(@array2)."\n";
print TwoDArrayOutputString2(@array2)."\n"."\n"."\n"."\n";
輸出:
{{}{}{},}
{{}{}{},}
}
{,}
{,}
}
和我的預期輸出是{{1,2,3},{1,2,3},{1,2,3}}
。
是。你是對的@chankey。你能分析一下這個代碼嗎?2DArrayOutputString2 { \t my($ array1)= @_; \t my $ finaloutput =「{」; foreach my $ aref(@ array1){ foreach my $ inner(@ $ aref){ $ finaloutput。=「{」; foreach my $ elem(@ $ inner){$ finaloutput。= $ elem。「,」; } $ finaloutput。=「}」。「,」; } } return $ finaloutput; } my @ array1 = [[1,2,3],[1,2,3],[1,2,3]]; print TwoDArrayOutputString2(\ @ array1);' –