ASP 动态数组
A ? 定義數(shù)組 ?
? ?
? 有兩種方式:DIM和REDIM。 ?
? ?
? DIM定義的是固定個(gè)數(shù)、數(shù)據(jù)類型的數(shù)組;而REDIM則不同,它可以定義不同類型的數(shù)據(jù),也可以定義個(gè)數(shù)并非固定的數(shù)據(jù)。比較下面幾個(gè)例子。 ? 都合法的例子: ?
? ?
? ? 程序代碼 ?
? ?
? Dim ? myarray(5,2) ? ?
? Redim ? myarray(5,2) ?
? ?
? ?
? 前者錯(cuò)誤而后者合法的例子: ?
? ?
? n=10 ? n=10 ?
? ?
? Dim ? myarray(n) ? ?
? Redim ? myarray(n,2) ?
? 另外REDIM還可以定義未定類型的數(shù)組,如:Redim ? myarray(10) ?
? ?
? ?
? ?
? B ? 數(shù)組個(gè)數(shù) ?
? ?
? 在以DIM或REDIM定義數(shù)組時(shí)指定的下標(biāo),表示的是訪問(wèn)該數(shù)組時(shí)所容許的最大下標(biāo),卻不是該數(shù)組的個(gè)數(shù)。實(shí)際上,一維數(shù)組個(gè)數(shù)總是等于(最大下標(biāo)+1),訪問(wèn)時(shí)是通過(guò)下標(biāo)從0開(kāi)始逐個(gè)訪問(wèn)的。 ?
? ?
? 比如:Dim ? myarray(5) ? 定義的數(shù)組元素有6個(gè),分別是:myarray(0)、myarray(1)、myarray(2)、myarray(3)、myarray(4)、myarray(5)。 ?
? ?
? 再如:Redim ? thisarray(2,5)實(shí)際上定義了一個(gè)(2+1)*(5+1)=1 ? 8的二維數(shù)組。 ?
? ?
? 既然如此,那么,可不可義定義一個(gè)只有一個(gè)元素的數(shù)組呢?答案是:不可以。 ?
? ?
? 如前所說(shuō),Redim ? thisarray(1)定義的數(shù)組實(shí)際上有(1+1)個(gè)數(shù)組元素,但類似于: ? Redim ? thisarray(0)的語(yǔ)法,錯(cuò)誤的。所以,不能定義一個(gè)只有一個(gè)數(shù)組元素的數(shù)組。 ? 其實(shí),以上說(shuō)的只是其默認(rèn)狀況。其實(shí),定義數(shù)組可以通過(guò)定義下標(biāo)的起止從而達(dá)到定義數(shù)組的個(gè)數(shù)甚至下標(biāo)的起止編號(hào)的。比如:Redim ? thisarray(1980 ? to1990)就 ? 定義了一個(gè)含有11個(gè)元素的數(shù)組,下標(biāo)從1980到1990。 ?
? ?
? ?
? ?
? C ? 關(guān)于UBOUND函數(shù) ?
? ?
? UBOUND返回的是一維數(shù)組的最大下標(biāo),而不是元素個(gè)數(shù)。 ? 比如:Dim ? Myarray(5),那么UBOUND(Myarray)返回的值是5,而不是6。 ? UBOUND也可以應(yīng)用于二維數(shù)組。應(yīng)用于二維數(shù)組時(shí),它返回的是第一個(gè)下標(biāo)的最大值。 ?
? ?
? 比如:Dim ? Myarray(6,3), ?
? ?
? 那么UBOUND(Myarray)返回的值是6,而不是7,更不是18(6*3=18)。 ?
? ?
? 若要返回第二個(gè)下標(biāo)的最大值,則使用:UBOUND(Myarray,2)。 ?
? ?
? 與UBOUND相對(duì)應(yīng)的是另外一個(gè)函數(shù):LBOUND,它返回?cái)?shù)組的最小下標(biāo)。與UBOUND類似,LBOUND(Myarray,2)則返回?cái)?shù)組 MYARRAY的第二個(gè)下標(biāo)的最小值。所以,準(zhǔn)確地說(shuō),一維數(shù)組Myarray的元素個(gè)數(shù)為:UBOUND(Myarray)-LBOUND (Myarray)+1,而二維數(shù)組的元素個(gè)數(shù)則為: ?
? ?
? (UBOUND(Myarray)-LBOUND(Myarray)+1)*(UBOUND(Myarray,2)-LBOUND(Myarray,2)+1) ?
? ?
? 多維數(shù)組依此類推。 ?
? ?
? 數(shù)組的定義 ?
? ?
? ? 程序代碼 ?
? ?
? Dim ? MyArray ?
? MyArray ? = ? Array(1,5,123,12,98) ?
? ?
? ?
? ?
? ?
? 可擴(kuò)展數(shù)組 ?
? ?
? ? 程序代碼 ?
? ?
? Dim ? MyArray() ?
? for ? i ? = ? 0 ? to ? 10 ?
? ReDim ? Preserve ? MyArray(i) ?
? MyArray(i)=i ?
? next ?
? ?
? ?
? ?
? 將一個(gè)字符串分割并返回分割結(jié)果的數(shù)組 ?
? ?
? ? 程序代碼 ?
? ?
? Dim ? MyArray ?
? MyArray ? = ? Split(tempcnt,chr(13)&chr(10)) ?
? For ? I ? = ? Lbound(MyArray) ? to ? Ubound(MyArray) ?
? Response.Write ? MyArray(I) ? & ? "<br>" ?
? Next ?
? ?
? ?
? ?
? 數(shù)組排序函數(shù) ?
? ?
? ? 程序代碼 ?
? ?
? 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 ?
? ?
? ?
? ?
? 數(shù)組排序函數(shù)應(yīng)用例子 ?
? ?
? ? 程序代碼 ?
? ?
? 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 ?
? ?
? ?
? ?
? 在Application和Session中使用數(shù)組 ?
? ?
? ? 程序代碼 ?
? ?
? Application.Lock ?
? Application("StoredArray") ? = ? MyArray ?
? Application.Unlock ?
? ?
? LocalArray ? = ? Application("StoredArray") ?
? ?
? ?
? ?
? ?
? 覆蓋Application中的數(shù)組 ?
? ?
? ? 程序代碼 ?
? ?
? Application.Lock ?
? Application("StoredArray") ? = ? LocalArray ?
? Application.Unlock ?
? ?
? ?
? ?
? Session使用方法與Application相同 ?
? ?
? 從數(shù)據(jù)庫(kù)中把數(shù)據(jù)導(dǎo)入數(shù)組中 ?
? ?
? ?
? ?
? ? 程序代碼 ?
? ?
? Dim ? MyArray ?
? 取出全部記錄 ?
? MyArray ? = ? RS.GetRows ?
? 取出前10項(xiàng)記錄 ?
? 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
? ?
? 有兩種方式:DIM和REDIM。 ?
? ?
? DIM定義的是固定個(gè)數(shù)、數(shù)據(jù)類型的數(shù)組;而REDIM則不同,它可以定義不同類型的數(shù)據(jù),也可以定義個(gè)數(shù)并非固定的數(shù)據(jù)。比較下面幾個(gè)例子。 ? 都合法的例子: ?
? ?
? ? 程序代碼 ?
? ?
? Dim ? myarray(5,2) ? ?
? Redim ? myarray(5,2) ?
? ?
? ?
? 前者錯(cuò)誤而后者合法的例子: ?
? ?
? n=10 ? n=10 ?
? ?
? Dim ? myarray(n) ? ?
? Redim ? myarray(n,2) ?
? 另外REDIM還可以定義未定類型的數(shù)組,如:Redim ? myarray(10) ?
? ?
? ?
? ?
? B ? 數(shù)組個(gè)數(shù) ?
? ?
? 在以DIM或REDIM定義數(shù)組時(shí)指定的下標(biāo),表示的是訪問(wèn)該數(shù)組時(shí)所容許的最大下標(biāo),卻不是該數(shù)組的個(gè)數(shù)。實(shí)際上,一維數(shù)組個(gè)數(shù)總是等于(最大下標(biāo)+1),訪問(wèn)時(shí)是通過(guò)下標(biāo)從0開(kāi)始逐個(gè)訪問(wèn)的。 ?
? ?
? 比如:Dim ? myarray(5) ? 定義的數(shù)組元素有6個(gè),分別是:myarray(0)、myarray(1)、myarray(2)、myarray(3)、myarray(4)、myarray(5)。 ?
? ?
? 再如:Redim ? thisarray(2,5)實(shí)際上定義了一個(gè)(2+1)*(5+1)=1 ? 8的二維數(shù)組。 ?
? ?
? 既然如此,那么,可不可義定義一個(gè)只有一個(gè)元素的數(shù)組呢?答案是:不可以。 ?
? ?
? 如前所說(shuō),Redim ? thisarray(1)定義的數(shù)組實(shí)際上有(1+1)個(gè)數(shù)組元素,但類似于: ? Redim ? thisarray(0)的語(yǔ)法,錯(cuò)誤的。所以,不能定義一個(gè)只有一個(gè)數(shù)組元素的數(shù)組。 ? 其實(shí),以上說(shuō)的只是其默認(rèn)狀況。其實(shí),定義數(shù)組可以通過(guò)定義下標(biāo)的起止從而達(dá)到定義數(shù)組的個(gè)數(shù)甚至下標(biāo)的起止編號(hào)的。比如:Redim ? thisarray(1980 ? to1990)就 ? 定義了一個(gè)含有11個(gè)元素的數(shù)組,下標(biāo)從1980到1990。 ?
? ?
? ?
? ?
? C ? 關(guān)于UBOUND函數(shù) ?
? ?
? UBOUND返回的是一維數(shù)組的最大下標(biāo),而不是元素個(gè)數(shù)。 ? 比如:Dim ? Myarray(5),那么UBOUND(Myarray)返回的值是5,而不是6。 ? UBOUND也可以應(yīng)用于二維數(shù)組。應(yīng)用于二維數(shù)組時(shí),它返回的是第一個(gè)下標(biāo)的最大值。 ?
? ?
? 比如:Dim ? Myarray(6,3), ?
? ?
? 那么UBOUND(Myarray)返回的值是6,而不是7,更不是18(6*3=18)。 ?
? ?
? 若要返回第二個(gè)下標(biāo)的最大值,則使用:UBOUND(Myarray,2)。 ?
? ?
? 與UBOUND相對(duì)應(yīng)的是另外一個(gè)函數(shù):LBOUND,它返回?cái)?shù)組的最小下標(biāo)。與UBOUND類似,LBOUND(Myarray,2)則返回?cái)?shù)組 MYARRAY的第二個(gè)下標(biāo)的最小值。所以,準(zhǔn)確地說(shuō),一維數(shù)組Myarray的元素個(gè)數(shù)為:UBOUND(Myarray)-LBOUND (Myarray)+1,而二維數(shù)組的元素個(gè)數(shù)則為: ?
? ?
? (UBOUND(Myarray)-LBOUND(Myarray)+1)*(UBOUND(Myarray,2)-LBOUND(Myarray,2)+1) ?
? ?
? 多維數(shù)組依此類推。 ?
? ?
? 數(shù)組的定義 ?
? ?
? ? 程序代碼 ?
? ?
? Dim ? MyArray ?
? MyArray ? = ? Array(1,5,123,12,98) ?
? ?
? ?
? ?
? ?
? 可擴(kuò)展數(shù)組 ?
? ?
? ? 程序代碼 ?
? ?
? Dim ? MyArray() ?
? for ? i ? = ? 0 ? to ? 10 ?
? ReDim ? Preserve ? MyArray(i) ?
? MyArray(i)=i ?
? next ?
? ?
? ?
? ?
? 將一個(gè)字符串分割并返回分割結(jié)果的數(shù)組 ?
? ?
? ? 程序代碼 ?
? ?
? Dim ? MyArray ?
? MyArray ? = ? Split(tempcnt,chr(13)&chr(10)) ?
? For ? I ? = ? Lbound(MyArray) ? to ? Ubound(MyArray) ?
? Response.Write ? MyArray(I) ? & ? "<br>" ?
? Next ?
? ?
? ?
? ?
? 數(shù)組排序函數(shù) ?
? ?
? ? 程序代碼 ?
? ?
? 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 ?
? ?
? ?
? ?
? 數(shù)組排序函數(shù)應(yīng)用例子 ?
? ?
? ? 程序代碼 ?
? ?
? 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 ?
? ?
? ?
? ?
? 在Application和Session中使用數(shù)組 ?
? ?
? ? 程序代碼 ?
? ?
? Application.Lock ?
? Application("StoredArray") ? = ? MyArray ?
? Application.Unlock ?
? ?
? LocalArray ? = ? Application("StoredArray") ?
? ?
? ?
? ?
? ?
? 覆蓋Application中的數(shù)組 ?
? ?
? ? 程序代碼 ?
? ?
? Application.Lock ?
? Application("StoredArray") ? = ? LocalArray ?
? Application.Unlock ?
? ?
? ?
? ?
? Session使用方法與Application相同 ?
? ?
? 從數(shù)據(jù)庫(kù)中把數(shù)據(jù)導(dǎo)入數(shù)組中 ?
? ?
? ?
? ?
? ? 程序代碼 ?
? ?
? Dim ? MyArray ?
? 取出全部記錄 ?
? MyArray ? = ? RS.GetRows ?
? 取出前10項(xiàng)記錄 ?
? 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
轉(zhuǎn)載于:https://www.cnblogs.com/geoff/archive/2007/10/07/915962.html
總結(jié)
- 上一篇: 小幽默也有大道理:哲理幽默15则
- 下一篇: 初雪,小词一首