ASP 動態數組

來源:互聯網
上載者:User
A   定義數組  
   
  有兩種方式: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)  
   
     
   
  B   數組個數  
   
  在以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。  
   
     
   
  C   關於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)  
   
  多維陣列依此類推。  
   
  數組的定義  
   
    程式碼  
   
  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  
   
   
   
  數組排序函數  
   
    程式碼  
   
  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  
   
   
   
  在Application和Session中使用數組  
   
    程式碼  
   
  Application.Lock  
  Application("StoredArray")   =   MyArray  
  Application.Unlock  
   
  LocalArray   =   Application("StoredArray")  
   
   
   
   
  覆蓋Application中的數組  
   
    程式碼  
   
  Application.Lock  
  Application("StoredArray")   =   LocalArray  
  Application.Unlock  
   
   
   
  Session使用方法與Application相同  
   
  從資料庫中把資料匯入數組中  
   
   
   
    程式碼  
   
  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
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.