2011-02-13 139 views
2

一段簡單的代碼,在此我們要存儲數組的元素(這又是另一個陣列)的另一個變量:的AutoIt獲取子陣列從陣列

Global $arr[1][2] = [ [1, 2] ] 
Global $sub = $arr[0] 

而我們得到

Array variable has incorrect number of subscripts or subscript dimension range exceeded.: 
Global $sub = $arr[0] 
Global $sub =^ERROR 

如果我們寫

Global $arr[1][2] = [ [1, 2] ] 
Global $sub[2] = $arr[0] 

我們得到

Missing subscript dimensions in "Dim" statement.: 
Global $sub[2] = $arr[0] 
Global $sub[2] =^ERROR 

這麼簡單的任務,但我沒有找到如何做到這一點的方式。不知道。請幫忙。

回答

5

您正在創建一個具有2維的多維數組,而不是數組內的數組。兩者之間的區別如下:

  • 多維數組:

    Local $firstArray[2] = [1, 2] 
    Local $arr[1] = [ $firstArray ] 
    ;Local $sub = $arr[0][0] ; This does not work 
    
    Local $sub = $arr[0] 
    $sub = $sub[0] ; value = 1 
    

在大多數情況下的AutoIt你會:

Local $arr[1][2] = [ [1, 2] ] 
Local $sub = $arr[0][0] ; value = 1 
  • 內部陣列陣列更喜歡多維數組。另一個陣列中的數組會創建原始數組的副本,因此您將失去一些性能,並且對副本的修改不會影響原始數據。

    最後,更喜歡使用Local關鍵字來定義變量而不是Global關鍵字。如果使用Local關鍵字聲明變量,則可避免污染全局名稱空間。

  • +1

    清晰,簡短,全面的答案。 對於我來說,認識到多維數組不是我使用的所有編程語言都不是數組的數組是一個挑戰。 謝謝! – disfated 2011-02-15 06:42:59