Arrays 将一维阵列添加到现有二维阵列

Arrays 将一维阵列添加到现有二维阵列,arrays,merge,2d,element,autoit,Arrays,Merge,2d,Element,Autoit,我想合并一维数组。如何更改下面的AutoIt脚本以作为新生成的二维数组访问元素?测试脚本是: #Include <Array.au3> Local $_arr1=["name1","addr1","phone1"] Local $_arr2=["name2","arr2","phone2"] _make2darray($_arr1,$_arr2) Func _make2darray($_arr1,$_arr2) Local $_2darray=[$_arr1,$_arr2

我想合并一维数组。如何更改下面的AutoIt脚本以作为新生成的二维数组访问元素?测试脚本是:

#Include <Array.au3>

Local $_arr1=["name1","addr1","phone1"]
Local $_arr2=["name2","arr2","phone2"]
_make2darray($_arr1,$_arr2)

Func _make2darray($_arr1,$_arr2)
    Local $_2darray=[$_arr1,$_arr2]
    _ArrayDisplay($_2darray)

    _ArrayDisplay($_2darray[0])
    _ArrayDisplay($_2darray[1])

    ConsoleWrite($_2darray[0][0])
EndFunc
$\u 2darray[0]
输出为:

Row | Col 0
[0] |{Array}
[1] |{Array}
Row |Col 0
[0] |name1
[1] |addr1
[2] |phone1
Row |Col 0
[0] |name2
[1] |arr2
[2] |phone2
$\u 2darray[1]
输出为:

Row | Col 0
[0] |{Array}
[1] |{Array}
Row |Col 0
[0] |name1
[1] |addr1
[2] |phone1
Row |Col 0
[0] |name2
[1] |arr2
[2] |phone2
但访问二维阵列时发生错误:

ConsoleWrite($_2darray[0][0])
ConsoleWrite(^ ERROR
Exit code: 1    Time: 239.1

如何修复此问题?

您制作了一个1D数组,其中填充了其他1D数组

#Include <Array.au3>

Local $_arr1=["name1","addr1","phone1"]
Local $_arr2=["name2","arr2","phone2"]
Local $_2dArray = [$_arr1 , $_arr2]

_ArrayDisplay($_2dArray[0])
_ArrayDisplay($_2dArray[1])
#包括
本地$_arr1=[“name1”、“addr1”、“phone1”]
本地$_arr2=[“name2”、“arr2”、“phone2”]
本地$\u 2dArray=[$\u arr1,$\u arr2]
_ArrayDisplay($\u 2dArray[0])
_ArrayDisplay($\u 2dArray[1])
…访问二维阵列时出错

它将数组分配给另一个一维数组的元素,这些元素只能单独访问;比如:

$aArray = $_2dArray[0]
_ArrayDisplay($aArray)
或者只是
\u ArrayDisplay($\u 2dArray[0])
。但随后将其视为一个,因此
数组变量的下标数不正确或超出了下标维度范围。
-错误

如何修复下面的AutoIt脚本以允许访问新生成的2D数组的元素

根据:

调整现有阵列的大小

例如:

#include <AutoItConstants.au3>; UBound() constants.
#include <Array.au3>; _ArrayDisplay()

Global Const $g_aArray1D_1 = ['name1', 'address1', 'phone1']
Global Const $g_aArray1D_2 = ['name2', 'address2', 'phone2']

Global       $g_aArray2D   = [['NAME', 'ADDRESS', 'PHONE'] ]

_ArrayAdd1DtoArray2D($g_aArray2D, $g_aArray1D_1)
_ArrayAdd1DtoArray2D($g_aArray2D, $g_aArray1D_2)
_ArrayDisplay($g_aArray2D)

Func _ArrayAdd1DtoArray2D(ByRef $aArray2D, Const $aArray1D)
    Local Const $iRows = UBound($aArray2D, $UBOUND_ROWS)
    Local Const $iCols = UBound($aArray2D, $UBOUND_COLUMNS)

    ; Resize array:
    ReDim $aArray2D[$iRows + 1][$iCols]

    For $i1 = 0 To $iCols - 1

        ; Add values of 1D array to new row of 2D array:
        $aArray2D[$iRows][$i1] = $aArray1D[$i1]

    Next

EndFunc
现在可以使用
$g_aArray2D[x][x]
访问值