ASP數組是比較好用的裝載大量資料的容器。
1 定義數組
有兩種方式:DIM和REDIM。
DIM定義的是固定個數、資料類型的數組;而REDIM則不同,它可以定義不同類型的資料,也可以定義個數並非固定的資料。比較下面幾個例子。 都合法的例子:
Dim myarray(5,2)
Redim myarray(5,2)
前者錯誤而後者合法的例子:
n=10 n=10
Dim myarray(n)
Redim myarray(n,2)
另外REDIM還可以定義未定類型的數組,如:Redim myarray(10)
2 數組個數
在以DIM或REDIM定義數組時指定的下標,表示的是訪問該數組時所容許的最大下標,卻不是該數組的個數。實際上,一維數組個數總是等於(最大下標+1),訪問時是通過下標從0開始逐個訪問的。
比如:Dim myarray(5) 定義的數組元素有6個,分別是:myarray(0)、myarray(1)、myarray(2)、myarray(3)、myarray(4)、myarray(5)。
再如:Redim thisarray(2,5)實際上定義了一個(2+1)*(5+1)=1 8的二維數組。
既然如此,那麼,可不可義定義一個只有一個元素的數組呢?答案是:不可以。
如前所說,Redim thisarray(1)定義的數組實際上有(1+1)個數組元素,但類似於: Redim thisarray(0)的文法,錯誤的。所以,不能定義一個只有一個數組元素的數組。 其實,以上說的只是其預設狀況。其實,定義數組可以通過定義下標的起止從而達到定義數組的個數甚至下標的起止編號的。比如:Redim thisarray(1980 to1990)就 定義了一個含有11個元素的數組,下標從1980到1990。
3 關於UBOUND函數
UBOUND返回的是一維數組的最大下標,而不是元素個數。 比如:Dim Myarray(5),那麼UBOUND(Myarray)返回的值是5,而不是6。 UBOUND也可以應用於二維數組。應用於二維數組時,它返回的是第一個下標的最大值。
比如:Dim Myarray(6,3),
那麼UBOUND(Myarray)返回的值是6,而不是7,更不是18(6*3=18)。
若要返回第二個下標的最大值,則使用:UBOUND(Myarray,2)。
與UBOUND相對應的是另外一個函數:LBOUND,它返回數組的最小下標。與UBOUND類似,LBOUND(Myarray,2)則返回數組MYARRAY的第二個下標的最小值。所以,準確地說,一維數組Myarray的元素個數為:UBOUND(Myarray)-LBOUND(Myarray)+1,而二維數組的元素個數則為:
(UBOUND(Myarray)-LBOUND(Myarray)+1)*(UBOUND(Myarray,2)-LBOUND(Myarray,2)+1)
多維陣列依此類推。
4. 數組的定義
Dim MyArray
MyArray = Array(1,5,123,12,98)
可擴充數組
Dim MyArray()
for i = 0 to 10
ReDim Preserve MyArray(i)
MyArray(i)=i
next
將一個字串分割並返回分割結果的數組
Dim MyArray
MyArray = Split(tempcnt,chr(13)&chr(10))
For I = Lbound(MyArray) to Ubound(MyArray)
Response.Write MyArray(I) & "<br>"
Next
5.數組排序函數
Function Sort(ary)
KeepChecking = TRUE
Do Until KeepChecking = FALSE
KeepChecking = FALSE
For I = 0 to UBound(ary)
If I = UBound(ary) Then Exit For
If ary(I) > ary(I+1) Then
FirstValue = ary(I)
SecondValue = ary(I+1)
ary(I) = SecondValue
ary(I+1) = FirstValue
KeepChecking = TRUE
End If
Next
Loop
Sort = ary
End Function
數組排序函數應用例子
Dim MyArray
MyArray = Array(1,5,123,12,98)
MyArray = Sort(MyArray)
For I = Lbound(MyArray) to Ubound(MyArray)
Response.Write MyArray(I) & "<br>"
Next
6.在Application和Session中使用數組
Application.Lock
Application("StoredArray") = MyArray
Application.Unlock
LocalArray = Application("StoredArray")
覆蓋Application中的數組
Application.Lock
Application("StoredArray") = LocalArray
Application.Unlock
Session使用方法與Application相同
7.從資料庫中把資料匯入數組中
這種方法被我經常用於代碼的函數整合中。
Dim MyArray
取出全部記錄
MyArray = RS.GetRows
取出前10項記錄
MyArray = RS.GetRows(10)
For row = 0 To UBound(MyArray, 2)
For col = 0 To UBound(MyArray, 1)
Response.Write (col, row) & "<br>"
Next
Next
轉自: ASP數組全集,多維陣列和一維數組 - feng - 部落格園