2014-02-13 63 views
0

如何用2個數組創建多維數組?如何用2個數組創建二維數組

 @param=("param1","param2","param3"); 
     @value=("value1_1, value1_2, value1_3", "value2_1, value2_2, value2_3","value3_1, value3_2, value3_3"); 

     Output: 
     @out=(["param1"]["value1_1", "value1_2", "value1_3"], ["param2"]["value2_1", "value2_2", "value2_3"], ["param3"]["value3_1", "value3_2", "value3_3"]) 

我已經試過這樣:

 $j=0; 
     foreach $i(@param1){ 
       push @{$out[$i]}, split(", ", $value[$j]); 
       $j++;} 

回答

4

這不完全清楚,我要創建什麼數據結構。然而,我假設你正試圖創建一個散列數組(散列表也被稱爲字典關聯數組),而不是一個數組。 Perl中的區別在於數組總是使用整數作爲關鍵字,而散列總是使用字符串。

由此產生的數據結構將然後像

%out = (
    'param1' => ['value1_1', 'value1_2', 'value1_3'], 
    'param2' => ['value2_1', 'value2_2', 'value2_3'], 
    'param3' => ['value3_1', 'value3_2', 'value3_3'], 
); 

我們可以像這樣創建這個數據結構:

my %out; 
for my $i (0 .. $#param) { 
    $out{$param[$i]} = [split /,\s*/, $value[$i]]; 
} 

注意$#foo@foo數組中的最高指標。因此,0 .. $#foo將是@foo中所有指數的範圍。還要注意,與使用方括號$array[$index]的數組不同,哈希中的條目使用大括號下標$hash{$key}來訪問。

可以通過使用一個切片同時訪問散列或陣列的多個元件 - @foo{'a', 'b', 'c'}相當於($foo{a}, $foo{b}, $foo{c})。我們還可以通過使用map {BLOCK} LIST函數來轉換元素列表。一起,這允許進行以下溶液:

my %out; 
@out{@param} = map { [split /,\s*/, $_] } @value; 

裏面的映射塊中,$_變量設置爲在依次輸入列表中的每個項。

要詳細瞭解複雜的數據結構,讀(順序):

您還可以閱讀爲map function的文件和爲foreach loop

+0

正是我需要的 – PYPL