blue_dvd 发表于 2013-1-6 22:00:57

怎样定义三维数组?【已解决】

本帖最后由 blue_dvd 于 2013-1-7 17:05 编辑

怎样定义三维数组?
论坛搜到P大的方法Local $aTotal = [$aArray0, $aArray1, $aArray2, ..., ..., $aArray11]
$aArray_0 = $aTotal
MsgBox(0, "", $aArray_0)可惜运行编译出错!
哪位高手能有办法?主要用一个数组来管理不同的二维数组!

kevinch 发表于 2013-1-6 22:30:39

定义一个一维数组,把每个数组项塞一个二维数组进去就行了

blue_dvd 发表于 2013-1-6 23:26:07

回复 2# kevinch
能给个例子吗?

annybaby 发表于 2013-1-6 23:28:28

回复 3# blue_dvd


    #include'ARRAY.AU3'
Local $M=[['1','2'],['A','B']],$N=[['3','4'],['X','Y']]
Local $A=[$M,$N]
_ArrayDisplay($A)

blue_dvd 发表于 2013-1-6 23:57:39

本帖最后由 blue_dvd 于 2013-1-6 23:58 编辑

回复 4# annybaby
能否这样
$arr1=二维数组
$arr2=二维数组
$arr3=二维数组
写成
for $i=1 to 3
      $arr&$i=二维数组
next
就是不一个个写,用循环的方法写
可惜$arr&$i总是错!
有好的方法吗?
先谢了!

annybaby 发表于 2013-1-7 00:03:48

回复 5# blue_dvd

贴可以F5的码`~
出错不要紧~

kevinch 发表于 2013-1-7 01:07:52

#include <array.au3>

Dim $arr
For $n=0 To UBound($arr)-1
        $r=Random(3,9,1)
        $c=Random(3,9,1)
        Dim $arr2[$r][$c]
        For $i=0 To UBound($arr2)-1
                For $t=0 To UBound($arr2,2)-1
                        $arr2[$i][$t]=Random(1,9,1)
                Next
        Next
        $arr[$n]=$arr2
Next
For $n=0 To UBound($arr)-1
        _ArrayDisplay($arr[$n])
Next这个例子够生动了吧

netegg 发表于 2013-1-7 02:54:28

三维数组貌似用excel比较合适

happytc 发表于 2013-1-7 03:06:05

回复 1# blue_dvd

你想把数组放在另一个数组里面做为一个元素(象C语言里那样)?若是这个意思,au3里没有直接的方法干这事的,因为au3并没有给变量单独的地址空间。但可以间接地通过一个变量来得到嵌入数组的入口,这样做虽然可以,但会使得code非常地不可读性,特别在传递这个数组时,非常容易搞错。

Local $arr
Local $a1 =
Local $a2 =
$arr = $a1
$arr = $a2
$arr = 2
Local $dumy

For $i = 1 to $arr
    $dumy = $arr[$i]
    If IsArray($dumy) Then
      For $j = 1 to $dumy
            ConsoleWrite("$i:=" & $i & ", $dumy[" & $j & "]:=" & $dumy[$j] & @LF)
      Next
    Else
      ConsoleWrite("!>Oops!, What happened? Expected an array!" & @LF)
    EndIf
Next



若不是上面意思,那就直接定义个三维数组就可以了,有什么问题呢?

Global $aArray = [[["000", "001"], ["010", "011"], ["020", "021"], ["030", "031"]], _
                           [["100", "101"], ["110", "111"], ["120", "121"], ["130", "131"]], _
                           [["200", "201"], ["210", "211"], ["220", "221"], ["230", "231"]]]

ConsoleWrite($aArray & @CRLF)

xiaowo 发表于 2013-1-7 09:30:53

直接定义三维数组即可
Global $aArray

不过数组维度并非越多越好,数组定义出来要操作,多维数组缺少封装好的自定义操作函数,自己封装也麻烦
能用一维尽量不要用二维,勉强能用二维解决就不要往更多的维度思考了……

blue_dvd 发表于 2013-1-7 11:43:21

本帖最后由 blue_dvd 于 2013-1-7 11:45 编辑

终于搞定了
$oexcel=ObjCreate("excel.application")
    $oexcel.visible=False
    $wb=$oexcel.workbooks.open($sFilePath1)
   
        Local $iTemp = $wb.Sheets.Count
    Local $iarr[$iTemp ]
       
        For $i=1 To $iTemp
          $arr=$wb.worksheets($i).usedrange.value
          $iarr[ $i-1]= Array2DColsToRows($arr)
        Next
       
        For $i=1 To $iTemp
                _ArrayDisplay($iarr[$i-1])
        Next
       
        $wb.close(true)
    $oexcel.quit

blue_dvd 发表于 2013-1-7 11:48:00

思路是:把Excel中的工作表(二维数组)读取后,用一维数组管理!
感谢kevinch ,happytc 提供思路代码帮助!

PEM-System 发表于 2013-9-4 04:25:36

回复 4# annybaby
你的是二维数据吧
页: [1]
查看完整版本: 怎样定义三维数组?【已解决】