2014-11-15 59 views
1

說我有這樣的二維數組A,Perl數組轉換到1d

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[]; 

但它顯然是行不通的。

+0

我不認爲你的意思是你的問題中的方括號,因爲如果你這樣做了,那麼你所要的'@ B'實際上就是'@ A'。 – hobbs

+0

是的,你說得對,一定遲到了。我可能會以某種方式說@B使用@A,以便@B = [「text1」,「text2」,「text3」]。 –

+0

你似乎對你想要的東西感到困惑。你在'@ B'中描述的內容不是一維數組。你想要的就是'@ A'中已有的東西。也許你不確定數組是如何在Perl中工作的? – TLP

回答

1

您對新的@B的描述是@A已包含的內容。如果你的意思我想你的意思,那麼你可以用一個簡單的map做到這一點:

my @B = map @$_, @A; 
+0

謝謝,如果我還想要:@C = [「text4」,「text5」,「text6」]只使用@A? –

+1

'我的@C = @ {$ A [1]}' – Borodin

+0

非常感謝! –

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循環和值存儲到二維數組

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

OUTPUT:

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

可能這是對您的問題有用。