码迷,mamicode.com
首页 > 编程语言 > 详细

WEB开发教程--ASP中静态数组与动态数组的用法

时间:2015-06-28 12:41:15      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:web开发   asp   数组   

在ASP中,数组是具有相同名字的一组变量,数组中包含多个元素,由不同的下标值区分数组的各个元素。在VBScript中,数组有两种类型:静态数组和动态数组。
1、静态数组
静态数组在编译时开辟内存区,数组大小在运行时不可改变。
定义一个一维数组mmArray(3)
Dim mmArray(3)
mmArray(0)=1
mmArray(1)=3
mmArray(2)=5
mmArray(3)=7
其中mmArray是数组名,数组的下界为0,上界为3,数组元素从mmArray(0)到mmArray(3),共有4个元素。
也可以这样定义:
Dim MyArray
MyArray=Array(1,3,5,7)
n=10
Dim MyArray(n) ‘这样定义数组错误
定义静态数组,必须确定数组的上界,数组的上界不能为变量。因为静态数组是在编译时就开辟内存区的。
2、动态数组
动态数组是运行时大小可变的数组。当程序没运行时,动态数组不占内存,在程序运行时才开辟内存。
动态数组的定义一般分两步:
首先,用Dim语句声明一个括号内不包含下标的数组。
然后,在使用数组之前用ReDim语句根据实际需要重新定义下标值。
也可以用Redim语句直接定义数组。例如
ReDim a(2)
a(0)=1
a(1)=2
a(2)=3
ReDim语句的格式为:ReDim [Preserve] 变量(下标)
例如定义动态数组arrOrg
Dim arrOrg()
ReDim arrOrg(3)’在使用arrOrg之前,必须用ReDim语句分配实际的元素个数
可以用ReDim不断改变元素数目
Dim ArrOrg()
ReDim arrOrg(3)
ReDim arrOrg(5)
ReDim arrOrg(2)
每次执行ReDim语句时,存储在数组中的当前值都会全部丢失。如果希望改变数组大小而又不丢失数组中的数据,要使用关键字Preserve。
<%
ReDim a(2)
a(0)=1
a(1)=2
a(2)=3
ReDim Preserve a(1)
a(1)=9
For n=0 To UBound(a)
Response.Write a(n) & “

Next
%>
ReDim Preserve arrOrg(Ubound(arrOrg)+1)
以上代码将数组扩大一个元素,现有元素值不变。Ubound()函数返回数组的上界。
注意:在用ReDim语句重新定义数组时,只能改变数组元素的个数,而不能改变数组的维数。
3、为什么要使用动态数组?
当程序没运行时,动态数组不占内存,在程序运行时才开辟内存。
动态数组是运行时大小可变的数组。
使用动态数组的优点是可以根据用户需要,有效利用存储空间。
如果你将某数据存入数组中,在不确定有多少个的情况下,使用动态数组将是非常好的办法。
比如,有1亿个数据。其中仅需100个符合要求的数据放到数组中。选用动态数组的方法将是明智的。
下例将1000内被54整除的数放到某数组中。
Dim MyArray()’声明一个括号内不包含下标的数组。
Dim i,j
j=0
For i=0 To 1000
IF i Mod 54=0 Then
ReDim Preserve MyArray(j)
MyArray(j)=i
j=j+1
End IF
Next
‘输出
Response.Write “1000内被54整除的数共有:” & Ubound(MyArray)+1 & “个,分别是:


For i=0 to Ubound(MyArray)
Response.Write MyArray(i) & “

Next
这个例子说明,你不确定数组元素个数,但如果你直接定义Dim MyArray(1000),是极其愚蠢的。
一是这样定义将浪费存储空间。本例中实际需要的数组元素为19个
二是这样的代码执行效率低,造成资源浪费。比如对这元素重新排序。直接定义Dim MyArray(1000),将要遍历1000次。
可扩展数组,程序代码如下
Dim MyArray()
For i=0 To 10
ReDim Preserve MyArray(i)
MyArray(i)=i
Next
将一个字符串分割并返回分割结果的数组,程序代码如下
Dim tmpStr,MyArray
tmpStr=”1,3,5,7,9”
MyArray=Split(tmpStr,”,”)
For N=0 to Ubound(MyArray)
Response.Write MyArray(N) & “

Next

在Application和Session中使用数组(Session使用方法与Application相同)
以Application为例,将数组放到全局缓存中。程序代码如下
Application.Lock
Application(“appArray”)=MyArray
Application.Unlock
更改全局缓存数组时,必须先将全局缓存数组赋给变量,更改该变量某一元素值,然后再将该变量放到全局缓存中。而不能直接修改全局缓存某一元素而改变该元素的值。请分析以下例子:
<%
Dim MyArray,tmpArr
MyArray=array(1,2,3)
Application.Lock
Application(“appArray”)=MyArray
Application.Unlock
Response.Write Application(“appArray”)(1) & “

‘以下方法是错误的
Application.Lock
Application(“appArray”)(1)=9
Application.Unlock
Response.Write Application(“appArray”)(1) & “

‘以下方法是正确的
tmpArr=Application(“appArray”)
tmpArr(1)=9
Application.Lock
Application(“appArray”)=tmpArr
Application.Unlock
Response.Write Application(“appArray”)(1) & “

%>
结果是:
2
2
9

WEB开发教程--ASP中静态数组与动态数组的用法

标签:web开发   asp   数组   

原文地址:http://blog.csdn.net/wanglixin1999/article/details/46670457

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!