将1D数组添加到现有2D数组 [英] Add 1D array to existing 2D array

查看:129
本文介绍了将1D数组添加到现有2D数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想合并一维数组.如何在AutoIt脚本下方更改以将元素作为新生成的2D数组访问?测试脚本是:

I want to merge 1D arrays. How to change below AutoIt script to access elements as a newly generated 2D array? Test script is :

#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

$_2darray输出为:

Row | Col 0
[0] |{Array}
[1] |{Array}

$_2darray[0]输出为:

Row |Col 0
[0] |name1
[1] |addr1
[2] |phone1

$_2darray[1]输出为:

Row |Col 0
[0] |name2
[1] |arr2
[2] |phone2

但是访问2D数组时发生错误:

But an error occurs accessing the 2D array:

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

我该如何解决?

推荐答案

…访问2D数组…

… an error occurs accessing the 2D array …

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

It assigns arrays to another 1D array's elements, which can only be accessed isolated; like:

$aArray = $_2dArray[0]
_ArrayDisplay($aArray)

或仅_ArrayDisplay($_2dArray[0]).但是然后将其视为二维数组来解决,因此Array variable has incorrect number of subscripts or subscript dimension range exceeded. -错误.

or just _ArrayDisplay($_2dArray[0]). But then addresses this as if it were a 2 dimensional array, hence the Array variable has incorrect number of subscripts or subscript dimension range exceeded. -error.

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

How can I fix below AutoIt script to allow accessing elements of the newly generated 2D array?

根据文档-关键字-ReDim :

调整现有数组的大小.

Resize an existing array.

示例:

#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

或使用 _ArrayAdd() (转换为字符串):

Or using _ArrayAdd() (converts to strings) :

#include <Array.au3>; _ArrayToString() _ArrayAdd() _ArrayDisplay()

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

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

_ArrayAdd($g_aArray2D, _ArrayToString($g_aArray1D_1))
_ArrayAdd($g_aArray2D, _ArrayToString($g_aArray1D_2))
_ArrayDisplay($g_aArray2D)

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

这篇关于将1D数组添加到现有2D数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆