主頁(yè) > 知識(shí)庫(kù) > ASP定義數(shù)組方法的技巧

ASP定義數(shù)組方法的技巧

熱門標(biāo)簽:不封卡外呼系統(tǒng)一般多少錢 地圖標(biāo)注中心多少錢注冊(cè) 北京大興區(qū)地圖標(biāo)注 濰坊呼叫中心外呼系統(tǒng)供應(yīng)商 微信地圖標(biāo)注有什么用 地圖標(biāo)注不完整被罰款 鄭州語(yǔ)音電銷機(jī)器人官網(wǎng) 重慶外呼電銷系統(tǒng)費(fèi)用 電銷機(jī)器人一個(gè)多少錢

數(shù)組是有序數(shù)據(jù)的集合。數(shù)組中的元素可以不屬于同一個(gè)數(shù)據(jù)類型。用一個(gè)統(tǒng)一的數(shù)組名和下標(biāo)來(lái)唯一地確定數(shù)組中的元素,更改其中一個(gè)元素并不會(huì)影響其它元素。數(shù)組的下標(biāo)是有界的,分為下界和上界。數(shù)組可以用Dim、Private、Public或Static來(lái)聲明,它們的語(yǔ)法格式相同。下面只介紹用Dim聲明數(shù)組的方法。

1.?dāng)?shù)組的定義與聲明
數(shù)組的定義語(yǔ)法如下:

Dim 數(shù)組名( [[下標(biāo)下界 To ] 下標(biāo)上界] ) [As 數(shù)據(jù)類型]

例如(假設(shè)在當(dāng)前模塊中 數(shù)組的缺省下界為0)):

① Dim A(10) As Integer

表示數(shù)組名為A,此數(shù)組下標(biāo)下界為缺省值0,下標(biāo)上界為10,有11個(gè)Integer類型的元素,從A(0)、A(1)到A(10)。

② Dim B(1 To 20) As Integer

表示數(shù)組名為B,此數(shù)組下標(biāo)下界為1,下標(biāo)上界為20,有20個(gè)Integer類型的元素,從B(1)到B(20)。

③Dim DayArray(50)

表示DayArray 是一個(gè)有 51 個(gè)索引(從 0 到 50)元素的 Variant 數(shù)組。

④Dim Matrix(3, 4) As Integer

表示Matrix 是一個(gè)二維 Integer 數(shù)組。

⑤Dim MyMatrix(1 To 5, 4 To 9, 3 To 5) As Double

表示MyMatrix 是一個(gè)顯式指定了上下界的三維 double 數(shù)組。

⑥D(zhuǎn)im BirthDay(1 To 10) As Date

表示BirthDay 是一個(gè)索引從 1 到 10 的 Date型 數(shù)組。

2.Option Base 語(yǔ)句
Option Base 語(yǔ)句在模塊級(jí)別中使用,用來(lái)聲明數(shù)組下標(biāo)的缺省下界。

Option Base 語(yǔ)句的語(yǔ)法如下:

Option Base {0 | 1}

  說(shuō)明:缺省狀態(tài)下數(shù)組下界為 0,此時(shí)無(wú)需使用 Option Base 語(yǔ)句。如果使用該語(yǔ)句規(guī)定數(shù)組下界1,則必須在模塊的數(shù)組聲明之前使用Option Base 語(yǔ)句。

注意:

(1)Dim、Private、Public、ReDim 以及 Static 語(yǔ)句中的 To 子句提供了一種更靈活的方式來(lái)控制數(shù)組的下標(biāo)。不過(guò),如果沒(méi)有使用 To 子句顯式地指定下界,則可以使用 Option Base 將缺省下界設(shè)為 1。使用 Array 函數(shù)創(chuàng)建的數(shù)組的下界也受 Option Base 語(yǔ)句指定的下界的決定, 除非 Array 是由類型庫(kù)(例如 VBA.Array )名稱限定,如果是由類型庫(kù)名稱限定,則 使用Array 函數(shù)創(chuàng)建的數(shù)組的下界不受 Option Base 的影響。

(2) Option Base 語(yǔ)句只影響位于包含該語(yǔ)句的模塊中的數(shù)組下界。

關(guān)于數(shù)組聲明的幾點(diǎn)說(shuō)明:

①數(shù)組名命名規(guī)則和變量名的相同。

②數(shù)組名后是用圓括弧括起來(lái)的,不能用方括弧,不同于C語(yǔ)言。

③下標(biāo)的下界必須不能大于其上界。

④可以用變量名或常數(shù)名(以及實(shí)數(shù))作下標(biāo)的邊界。當(dāng)下標(biāo)的邊界是常數(shù)名時(shí),數(shù)組的大小固定,當(dāng)下標(biāo)的邊界是變量名時(shí),數(shù)組的大小可作動(dòng)態(tài)定義,即數(shù)組的大小取決于程序運(yùn)行過(guò)程中變量的值。因此,VB 中數(shù)組又可以分為兩種數(shù)組:靜態(tài)數(shù)組、動(dòng)態(tài)數(shù)組。

3.靜態(tài)數(shù)組
靜態(tài)數(shù)組是指數(shù)組元素的個(gè)數(shù)是固定不變的,即它們占用的內(nèi)存空間大小是固定不變的。根據(jù)固定大小數(shù)組的維數(shù)不同,可以將它分為一維數(shù)組和多維數(shù)組。

聲明多維數(shù)組的語(yǔ)法格式為:

Dim 數(shù)組名([下標(biāo)邊界列表]) [As 數(shù)據(jù)類型]

下標(biāo)邊界的定義形式:[下標(biāo)下界 To]下標(biāo)上界

下標(biāo)邊界列表指用逗號(hào)分開的數(shù)組各維的下標(biāo)邊界,即

[下標(biāo)下界 To]下標(biāo)上界,[下標(biāo)下界 To]下標(biāo)上界,……,[下標(biāo)下界 To]下標(biāo)上界

(第一維) (第二維) (第n維)

當(dāng)n=1時(shí),數(shù)組稱作一維數(shù)組;當(dāng)n=2時(shí),數(shù)組稱作二維數(shù)組;依次類推,當(dāng)n=m時(shí),數(shù)組稱作m維數(shù)組。

下面舉例介紹一維數(shù)組的使用。

'聲明一個(gè)長(zhǎng)度為51的字符串?dāng)?shù)組FriendsName

Dim FriendsName(50) As String

'聲明一個(gè)長(zhǎng)度為11的全局整型數(shù)組Class

Public Class(10) As Integer

一維數(shù)組中的元素個(gè)數(shù)為(上界-下界+1)。

為數(shù)組賦初值可以采用循環(huán)語(yǔ)句,如:

Dim I As Integer

For I = 0 To 11 '循環(huán)語(yǔ)句的使用程序流程的控制

C(I) = I

Next I

  如果不顯式指定下標(biāo)下界,則數(shù)組的下標(biāo)下界由 Option Base 語(yǔ)句控制。如果沒(méi)有 Option Base 語(yǔ)句則下界為默認(rèn)為 0。

數(shù)組的維數(shù)并不限于2,在VB中,可以擴(kuò)大至于60,在實(shí)際應(yīng)用上對(duì)三維以上的數(shù)組的應(yīng)用是不多的。定義一個(gè)多維數(shù)組時(shí)只需一條Dim語(yǔ)句指定數(shù)組的所有下標(biāo)邊界即可,使用多維數(shù)組的可以很方便的表示一些有意義的統(tǒng)計(jì)數(shù)據(jù)。例如:

Dim Profit(16,10,12) As Currency

這個(gè)Profit數(shù)組可用來(lái)表示以店名、部門及月份為參數(shù)的某百貨公司的利潤(rùn)。如:Profit(2,8,11)代表了第二分店的第八部門在11月份的利潤(rùn)。

4.動(dòng)態(tài)數(shù)組
有時(shí)在數(shù)組開始使用前,不能知道需要多大的數(shù)組才能滿足實(shí)際需要。當(dāng)然可以把數(shù)組的大小定義到足夠大來(lái)滿足任意的實(shí)際應(yīng)用需要,這種方法效率很低(大量浪費(fèi)內(nèi)存空間)。如果使用動(dòng)態(tài)數(shù)組,就可以在程序運(yùn)行時(shí)根據(jù)實(shí)際需要,精確定義數(shù)組的大小。

在聲明數(shù)組時(shí),不給出維數(shù)列表就是將數(shù)組聲明為動(dòng)態(tài)數(shù)組。例如:

Dim MyArry() As Integer

在使用動(dòng)態(tài)數(shù)組前,必須使用ReDim語(yǔ)句把它重新定義。如前面聲明的數(shù)組MyArry,可以用以下語(yǔ)句將它定義為一個(gè)動(dòng)態(tài)二維數(shù)組。

ReDim MyArry(10,10)

還可以通過(guò)重復(fù)執(zhí)行ReDim語(yǔ)句,多次定義動(dòng)態(tài)數(shù)組。使用ReDim最多能定義數(shù)組的維數(shù)是60。ReDim語(yǔ)句可以改變數(shù)組每維的元素個(gè)數(shù),但不能改變維數(shù)。下面是對(duì)ReDim語(yǔ)句的一個(gè)標(biāo)準(zhǔn)應(yīng)用舉例。

Dim MyArry() As Single ‘聲明動(dòng)態(tài)數(shù)組

ReDim MyArry(30,20,10) ‘重新定義數(shù)組

ReDim MyArry(50,23,21) ‘再次重新定義數(shù)組

ReDim的語(yǔ)法與Dim的相同,此外,它還有選擇項(xiàng)Preserve關(guān)鍵詞:

ReDim Preserve 數(shù)組名 ([ [下標(biāo)下界 To]下標(biāo)上界]) [As 數(shù)據(jù)類型]

例如:

ReDim MyArry(50,23,21)

ReDim Preserve MyArry(50,23,50)

注意:使用ReDim 時(shí),重新定義數(shù)組會(huì)使所有數(shù)組元素的值消失,而使用Preserve可以保留數(shù)據(jù)。但是用Preserve只能在改變數(shù)組的最后一維的大小時(shí),保留數(shù)組的數(shù)據(jù)。對(duì)于一維數(shù)組來(lái)說(shuō),所有數(shù)據(jù)都會(huì)保留,而對(duì)于多維數(shù)組:只能改變最后一維的大小,才能保留全部數(shù)組數(shù)據(jù),否則出錯(cuò)。

5.LBound 函數(shù)和UBound 函數(shù)
LBound 函數(shù)和Ubound函數(shù)都是返回一個(gè) Long 型數(shù)據(jù),前者得到的值為指定數(shù)組維可用的最小下標(biāo),而后者得到的是最大下標(biāo)。它們的語(yǔ)法為:

LBound(數(shù)組名[, 指定的維數(shù)])

UBound(數(shù)組名[, 指定的維數(shù)])

  其中數(shù)組名是必選的。指定的維數(shù)是可選的,表明指定返回哪一維的下界。1 表示第一維,2 表示第二維,如此類推。如果省略指定的維數(shù),就默認(rèn)為是 1。

關(guān)于如何使用LBound 函數(shù)與 UBound 函數(shù)可參見下例:

Dim A(1 to 100,3,-3 to 4) As Integer '定義一三維數(shù)組,假定沒(méi)有使用Option Base 語(yǔ)句改變數(shù)組下界的默認(rèn)值。

對(duì)數(shù)組A使用Lbound 和Ubound函數(shù),其返回值列表如下

所有維的缺省下界取決于 Option Base 語(yǔ)句的設(shè)置??梢钥闯鰧?duì)一數(shù)組使用LBound 函數(shù)與 UBound 函數(shù),可用于確定一個(gè)數(shù)組中元素的個(gè)數(shù)。

對(duì)于那些在聲明中用 To 子句來(lái)設(shè)定維數(shù)的數(shù)組而言,它們可以用任何整數(shù)作為下界而不受Option Base 語(yǔ)句的限制。

6.?dāng)?shù)組的高級(jí)功能
盡管數(shù)組最通常被用來(lái)存儲(chǔ)成組的變量,但是在別的一些方面數(shù)組也是很有用的??梢詫⒁粋€(gè)數(shù)組的內(nèi)容賦值給另一個(gè)數(shù)組、創(chuàng)建返回?cái)?shù)組的函數(shù),還可以創(chuàng)建返回?cái)?shù)組的屬性。在許多情況下,這些技術(shù)能改進(jìn)應(yīng)用程序的性能。

正如可以將一個(gè)變量的值賦給另一個(gè)變量,例如 StrA = StrB ,也可以將一個(gè)數(shù)組的內(nèi)容賦給另一個(gè)數(shù)組。例如,要將一字節(jié)型數(shù)組從一個(gè)位置復(fù)制到另一個(gè)位置??梢酝ㄟ^(guò)每次復(fù)制一個(gè)字節(jié)來(lái)實(shí)現(xiàn),程序如下:

Sub ByteCopy(oldCopy() As Byte, newCopy() As Byte)

‘參數(shù)oldCopy()是源數(shù)組,newCopy()是目標(biāo)數(shù)組

Dim i As Integer

ReDim newCopy (Lbound(oldCopy) To UBound(oldCopy)) '重新定義動(dòng)態(tài)數(shù)組

For i = Lbound(oldCopy) To Ubound(oldCopy) '循環(huán)賦值

newCopy(i) = oldCopy(i)

Next

End Sub

一個(gè)更有效的簡(jiǎn)單的方法就是直接將一個(gè)數(shù)組賦給另外一個(gè)數(shù)組:

Sub ByteCopy(oldCopy() As Byte, newCopy() As Byte)

‘參數(shù)oldCopy()是源數(shù)組,newCopy()是目標(biāo)數(shù)組

newCopy = oldCopy '利用數(shù)組直接進(jìn)行賦值

End Sub

關(guān)于變量賦值有一些規(guī)則需要銘記。例如,雖然可以將一個(gè)聲明為整型的變量賦給一個(gè)聲明為長(zhǎng)整型的變量而不會(huì)產(chǎn)生任何問(wèn)題,但是將一個(gè)長(zhǎng)整型變量賦給一個(gè)整型變量就很容易導(dǎo)致溢出錯(cuò)誤。除了遵守有關(guān)數(shù)據(jù)類型變量之間賦值時(shí)的規(guī)則外,數(shù)組賦值還要遵從另外一些規(guī)則,包括數(shù)組維數(shù),每一維的大小,以及數(shù)組是固定的還是動(dòng)態(tài)的。

①維數(shù)、數(shù)據(jù)類型不同的數(shù)組賦值考慮的幾個(gè)因素

1、 賦值符左邊的數(shù)組類型:固定數(shù)組 (Dim x(1 to 10) As Integer) 或者動(dòng)態(tài)數(shù)組 (Dim x() As Integer)。

2、賦值符左邊數(shù)組的維數(shù)是否和賦值符右邊數(shù)組的維數(shù)匹配。

3、 賦值符兩邊數(shù)組的每一維的數(shù)組元素個(gè)數(shù)是否匹配。即使數(shù)組的聲明不同,維數(shù)也可能匹配。比如一個(gè)數(shù)組的每一維元素從 0 開始編號(hào)而另一個(gè)則從 1 開始,維數(shù)也可能匹配。

4、 賦值符兩邊所有元素的數(shù)據(jù)類型必須是相容的。這些規(guī)則和變量賦值的規(guī)則是一致的。

數(shù)組賦值時(shí)的錯(cuò)誤可能發(fā)生在編譯時(shí),也可能發(fā)生在運(yùn)行時(shí)(例如,如果數(shù)據(jù)類型不能強(qiáng)制轉(zhuǎn)換或賦值試圖重新聲明 (ReDim) 一個(gè)靜態(tài)數(shù)組)。設(shè)計(jì)程序時(shí)要添加錯(cuò)誤處理以確保數(shù)組在賦值之前是匹配的。

②編寫返回?cái)?shù)組的函數(shù)

從一個(gè)函數(shù)返回一組值是可能實(shí)現(xiàn)的。例如,從一個(gè)函數(shù)返回一組字節(jié)而不必將其先轉(zhuǎn)換為一個(gè)字符串然后再轉(zhuǎn)換回來(lái)。

下面是一個(gè)使用返回字節(jié)數(shù)組的函數(shù)的簡(jiǎn)單示例:

Private Sub Form_Load()

Dim b As Byte

Dim i As Integer

Dim ReturnArray() As Byte

b = Cbyte(54)

ReturnArray() = ArrayFunction(b) '調(diào)用函數(shù)

For i = Lbound(ReturnArray) To Ubound(ReturnArray)

Msgbox ReturnArray(i)  '通過(guò)彈出消息框循環(huán)顯示數(shù)組值 

Next

End Sub



Public Function ArrayFunction(b As Byte) As Byte()

Dim x(2) As Byte

x(0) = b

x(1) = b + CByte(200)

x(2) = b + b

ArrayFunction = x '返回結(jié)果為數(shù)組x

End Function 

在運(yùn)行以上示例后, ReturnArray() 是一個(gè)三元素?cái)?shù)組,其中包含了分配給 ArrayFunction 中數(shù)組的值。ArrayFunction 語(yǔ)句將一個(gè)數(shù)組作為參數(shù)傳遞;且數(shù)組的數(shù)據(jù)類型必須和函數(shù)的數(shù)據(jù)類型相同(在本例中是字節(jié))。因?yàn)檫@是一個(gè)函數(shù)調(diào)用,傳遞數(shù)組時(shí)不必帶括號(hào)。

注意:

1、盡管可以通過(guò)賦值給另一個(gè)數(shù)組(ArrayFunction = x())來(lái)返回一個(gè)數(shù)組,但出于性能方面的考慮,并不推薦使用這種方法。

2、必須為返回?cái)?shù)組的函數(shù)指定一個(gè)類型,這個(gè)類型可以是 Variant。這樣一來(lái),F(xiàn)unction X() As Variant() 是有效的而 Function X() As () 將失敗。

3、當(dāng)調(diào)用一個(gè)返回?cái)?shù)組的函數(shù)時(shí),用來(lái)保存返回值的變量也必須是一個(gè)數(shù)組,而且其數(shù)據(jù)類型必須和函數(shù)返回類型相同,否則將顯示一個(gè)“類型不匹配”的錯(cuò)誤。

以上就是小編和大家分享的ASP定義數(shù)組的方法,感興趣的小伙伴們可以來(lái)參考一下

您可能感興趣的文章:
  • asp取得數(shù)組中的最大值的方法
  • asp下使用數(shù)組存放數(shù)據(jù)的代碼
  • asp 得到動(dòng)態(tài)數(shù)組中元素的個(gè)數(shù)
  • asp.net 數(shù)組中字符串替換的幾種方式
  • asp 動(dòng)態(tài)數(shù)組 提供Add、Insert、Remove、RemoveAt、Search等方法。
  • asp.net 字符串、二進(jìn)制、編碼數(shù)組轉(zhuǎn)換函數(shù)
  • asp.net通過(guò)js實(shí)現(xiàn)Cookie創(chuàng)建以及清除Cookie數(shù)組的代碼
  • asp textarea 多行數(shù)組分割處理方法
  • asp 數(shù)組 重復(fù)刪除函數(shù)(腳本之家增強(qiáng)版)
  • ASP 過(guò)濾數(shù)組重復(fù)數(shù)據(jù)函數(shù)(加強(qiáng)版)
  • ASP 使用Filter函數(shù)來(lái)檢索數(shù)組的實(shí)現(xiàn)代碼
  • asp數(shù)組的使用介紹
  • Asp與JS的數(shù)組和字符串下標(biāo)介紹
  • asp中使用redim、preserve創(chuàng)建動(dòng)態(tài)數(shù)組實(shí)例

標(biāo)簽:唐山 攀枝花 佛山 鶴崗 汕頭 撫州 揭陽(yáng) 海南

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《ASP定義數(shù)組方法的技巧》,本文關(guān)鍵詞  ASP,定義,數(shù)組,方法,的,技巧,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《ASP定義數(shù)組方法的技巧》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于ASP定義數(shù)組方法的技巧的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章