2011-02-13 116 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