本帖最後由 gary8349 於 2013-2-15 17:08 編輯
~~~補上遺失的樓層~~~
介紹完 一維Array 接著介紹二維以上的陣列
初始值宣告一樣 [code=autoit]Dim $Array[3][3];宣告一個3*3的陣列[/code] 如果要加入初始值的話宣告就是這樣 [code=autoit]#include <Array.au3>
Dim $Array[3][3] = [ [0,0,0], [1,1,1], [2,2,3] ]
_ArrayDisplay ($Array)[/code] 或是這樣 [code=autoit]#include <Array.au3>
Dim $Array[3][3]
$Array[0][0] = 0
. $Array[0][1] = 0
$Array[0][2] = 0
$Array[1][0] = 1
$Array[1][1] = 1
$Array[1][2] = 1
$Array[2][0] = 2
$Array[2][1] = 2
$Array[2][2] = 2
_ArrayDisplay ($Array)[/code] 這樣子宣告很複雜的陣列螢幕寬度會不夠,或是很難維護
所以也可以這樣換行,方便閱覽 [code=autoit]#include <Array.au3> - #include <Array.au3>
-
- ;;; 在「,」 後面一個空白 加入 _ 就可以換行
- Dim $Array[3][3] = [ [0,0,0], _
- [1,1,1], _
- [2,2,3] ]
-
- _ArrayDisplay ($Array)
複製代碼接下來教如何用迴圈填入初始值
因為是二維陣列,所以這時候就需要雙迴圈才能達到目的 [code=autoit]#include <Array.au3>
Dim $Array[3][3]
For $i = 0 To 2; i 迴圈
For $j = 0 To 2; j 迴圈
$Array[$i][$j] = $i^$j ; 將資料分別填入 迴圈內
. Next
Next
_ArrayDisplay ($Array)[/code] 當然查詢Array高度也是非常重要的指令 [code=autoit]Dim $Array[5][3];;宣告一個 高度5、寬度3的 二維陣列
;;; @CRLF 是換行符號 在 &@CRLF& 後面空白 加入 _ 就可以換行
MsgBox (0, "陣列大小", "維度 = "&UBound ($Array, 0)&@CRLF& _ ; UBound ($Array, 0) 0是查詢維度
"高度 = "&UBound ($Array, 1)&@CRLF& _ ;; 1是查詢高度
"寬度 = "&UBound ($Array, 2)) ;; 2是查詢寬度[/code] 應用在 For loop上的話就是這樣 [code=autoit]#include <Array.au3>
Dim $Array[5][3];;宣告一個 高度5、寬度3的 二維陣列
For $i = 0 To (UBound ( $Array, 1)-1);;i 迴圈
For $j = 0 To (UBound ( $Array, 2)-1);; j 迴圈
$Array[$i][$j] = "i = "&$i&", j = "&$j
Next
Next
_ArrayDisplay ($Array)[/code] ReDim 功能是一個可以重新定義Array 大小的函式 [code=autoit] #include <array.au3>
Dim $Array[1];; 宣告一個 一維陣列 高度為 1
_ArrayDisplay($Array)
ReDim $Array[5];; 重新定義陣列高度 為5
_ArrayDisplay($Array)[/code] 二維陣列宣告方式也是一樣 [code=autoit]#include <array.au3>
Dim $Array[3][3] = [ [0,0,0], [1,1,1], [2,2,3] ]
_ArrayDisplay($Array)
ReDim $Array[5][5];; 重新定義陣列高度 為5
_ArrayDisplay($Array)[/code] 就算重新定義陣列大小,陣列內的資料並不會消失非常方便使用
接著介紹 Array 擴展函式
_ArrayPush(ByRef$avArray, $vValue[, $iDirection = 0])
新增值但不增加陣列大小,在結尾插入新值則刪除第一個,反之亦然。 [code=autoit]#include <Array.au3>
Dim $avArrayTarget[9] = [1, 2, 3, 4, 5, 6, 7, 8, 9]
Dim $avArraySource[2] = [100, 200]
_ArrayDisplay($avArrayTarget, "顯示 avArrayTarget 陣列內容");; 顯示 avArrayTarget 陣列內容
_ArrayPush($avArrayTarget, $avArraySource);; 插入陣列內容 從右邊 (下方)新增 (預設值)
_ArrayDisplay($avArrayTarget, "插入陣列內容 從右邊新增 (預設值)")
_ArrayPush($avArrayTarget, $avArraySource, 1);; 插入陣列內容 從左邊(上方)新增
_ArrayDisplay($avArrayTarget, "插入陣列內容 從左邊新增")
_ArrayPush($avArrayTarget, "Hello world!", 1);: 從左邊(上方)新增 一個數值後並加入一組陣列
_ArrayDisplay($avArrayTarget, "從左邊(上方)新增 一個數值後並加入一組陣列")[/code] _ArrayAdd(ByRef$avArray, $vValue)
在陣列的最後方新增一組數據 [code=autoit]#include <Array.au3>
Dim $Array[6] = [0,1,2,3,4,5]
_ArrayDisplay($Array);顯示Array初始值
_ArrayAdd( $Array, 6)
_ArrayDisplay($Array, "顯示新增後的Array")[/code] _ArrayDelete(ByRef$avArray, $iElement)
刪除某一個陣列資料,Array大小-1 [code=autoit]
#include <Array.au3> - #include <Array.au3>
-
- Dim $Array[6] = [0,1,2,3,4,5]
-
- _ArrayDisplay ($Array);顯示Array初始值
-
- _ArrayDelete ( $Array, 5); 刪除編號 第五號的 陣列內容與array高度-1
-
- _ArrayDisplay ($Array);顯示刪除後的Array
複製代碼 << 學習筆記 >>
指令:_ArrayDisplay
目的:在訊息框中顯示某個陣列(數組) 1維 或 2維 所有元素內容
語法: #include <Array.au3>
_ArrayDisplay(Const ByRef $avArray
[ , $sTitle = ""Array: ListViewDisplay""
[ , $iItemLimit = -1
[ , $iTranspose = 0
[ , $sSeparator = """"
[ , $sReplace = ""|""
[ , $sHeader = """"]]]]]])
參數:
$avArray: 要顯示的陣列
$sTitle: [可選] 視窗上的標題
$iItemLimit: [可選] 訊息框可顯示最多行數(Rows)
預設值:-1 (全部顯示不限行數)
$iTranspose: [可選] 預設0,其他值,則陣列的行、列值互換
$sSeparator: [可選] 快速設定 Opt("GUIDataSeparatorChar") 值
$sReplace : [可選] 取代 陣列元素中 $sSeparator 字符
$sheader: [可選] 訊息框的標頭 (用 "|" 分開)
傳回值:
成功(Success)傳回值:1
失敗(Failure):0
設定錯誤值: (@error)
1 - $avArray 非 陣列
2 - 超出 $avArray 陣列 維數(僅支援至 2維)
範例.1 [code=autoit]#include <Array.au3>
Dim $Array[3][3] = [ [0,0,0], [1,1,1], [2,2,2] ]
_ArrayDisplay ($Array,"標準排列-心得筆記")[/code]
範例.2
[code=autoit]#include <Array.au3>
Dim $Array[3][3] = [ [0,0,0], [1,1,1], [2,2,2] ]
_ArrayDisplay ($Array,"行列互換-心得筆記",-1,1)[/code]
範例.3 [code=autoit] #include <Array.au3>
Dim $Array[3][3] = [ [0,0,0], [1,1,1], [2,2,2] ]
_ArrayDisplay ($Array,"欄位名稱-心得筆記",-1,0,"","","行|柱0|柱1|柱2")[/code]
備註:功力不足,無法秀出$sSeparator 及 $sReplace 範例!
噹噹編輯於2012/10/22 [code=autoit]
1. #include <array.au3>
2.
3. Global $aTestArray[2][2] = [ [1, 2],[ "Test Row 1 Column 1", "Test Row 1 Column 2"] ];宣告 2X2 陣列
4.
5. _ArrayDisplay ( $aTestArray, "Test Array 1");; 預設
6.
7. _ArrayDisplay ( $aTestArray, "Test Array 2", -1, 0, "", "", "Row|Column1|Column2");; 自訂 Header 分行符號 「|」
8.
9. _ArrayDisplay ( $aTestArray, "Test Array 3", -1, 0, ",", "", "Row,Column1,Column2");; 自訂 Header 分行符號為「,」
10. [/code]
|