您的位置:首页 > 编程语言 > ASP

ASP数组的应用

2016-03-18 20:39 387 查看
ASP数组的应用2008-5-3 22:37阅读(1)

[align=center][/align]
数组变量和动态调整数组大小


VBScript 数组变量

有时候,将多个相关值赋给一个变量更为方便,因此可以创建包含一系列值的变量,称为数组变量。数组变量和标量变量是以相同的方式声明的,唯一的区别是声明数组变量时变量名后面带有括号 ( )。

下例声明了一个包含 11 个元素的一维数组:

Dim A(10)

虽然括号中显示的数字是 10,但由于在 VBScript 中所有数组都是基于 0 的,所以这个数组实际上包含 11 个元素。在基于 0 的数组中,数组元素的数目总是括号中显示的数目加 1。这种数组被称为固定大小的数组。

在数组中使用索引为数组的每个元素赋值。从 0 到 10,将数据赋给数组的元素,如下所示:

A(0) = 256

A(1) = 324

A(2) = 100

. . .

A(10) = 55

与此类似,使用索引可以检索到所需的数组元素的数据。例如:

. . .

SomeVariable = A(8)

. . .

数组并不仅限于一维。数组的维数最大可以为 60(尽管大多数人不能理解超过 3 或 4 的维数)。声明多维数组时用逗号分隔括号中每个表示数组大小的数字。在下例中,MyTable 变量是一个有 6 行和 11 列的二维数组:

Dim MyTable(5, 10)

在二维数组中,括号中第一个数字表示行的数目,第二个数字表示列的数目。

也可以声明动态数组,即在运行脚本时大小发生变化的数组。对数组的最初声明使用 Dim 语句或 ReDim 语句。但是对于动态数组,括号中不包含任何数字。www.aspxuexi.com

例如:

Dim MyArray()

ReDim AnotherArray()

要使用动态数组,必须随后使用 ReDim 确定维数和每一维的大小。在下例中,ReDim 将动态数组的初始大小设置为 25,而后面的 ReDim 语句将数组的大小重新调整为 30,同时使用 Preserve 关键字在重新调整大小时保留数组的内容。

ReDim MyArray(25)

. . .

ReDim Preserve MyArray(30)

重新调整动态数组大小的次数是没有任何限制的,尽管将数组的大小调小时,将会丢失被删除元素的数据。

ReDim 语句

ReDim [Preserve] varname(subscripts) [, varname(subscripts)] . . .

参数

Preserve

当更改现有数组最后一维的大小时保留数据。

varname

变量名,遵循标准变量命名规则。

subscripts

数组变量的维数,最多可以声明 60 维数组。subscripts 参数语法格式如下:

upper [,upper] . . .

数组的下界总是零。

说明

ReDim 语句通常用于指定或修改动态数组的大小,这些数组已用带有空括号的 Private、Public 或 Dim 语句(没有维数下标)正式声明过。可以重复使用 ReDim 语句更改数组维数和元素数目。www.aspxuexi.com

如果使用了 Preserve 关键字,就只能调整数组最后维的大小,并且不能改变数组的维数。例如,如果数组只有一维,就可以修改该数组的大小,因为该维是最后的也是仅有的一维。但是,如果数组有两个或更多维,就只能改变末维的大小并保留数组内容。

这个例子说明如何不擦掉该数组中存在的数据,而增加动态数组的终止维数。

ReDim X(10, 10, 10)

. . .

ReDim Preserve X(10, 10, 15)

警告 如果减小数组的大小,则将丢失被排除的元素中的数据。

变量初始化时,数值变量初始化为 0,字符串变量初始化为零长度字符串 ("")。在使用引用对象的变量前,必须使用 Set 语句将某个现有对象赋予该变量。在进行对象赋值以前,已声明的对象变量有特定值 Nothing。

asp 数组的大小 LBound 函数和UBound 函数

LBound 函数

返回指定数组维的最小可用下标。

LBound(arrayname[, dimension])

参数

arrayname

数组变量名,遵循标准变量命名规则。

Dimension

指明要返回哪一维下界的整数。使用 1 表示第一维,2 表示第二维,以此类推。如果省略 dimension 参数,默认值为 1。

说明

LBound 函数与 UBound 函数共同使用以确定数组的大小。使用 UBound 函数可以找到数组某一维的上界。

任一维的下界都是 0。

UBound 函数

返回指定数组维数的最大可用下标。

UBound(arrayname[, dimension])

参数

arrayname

必选项。数组变量名,遵循标准变量命名规则。

Dimension

可选项。指定返回哪一维上界的整数。1 表示第一维,2 表示第二维,以此类推。如果省略 dimension 参数,则默认值为 1。

说明

UBound 函数与 LBound 函数一起使用,用于确定数组的大小。使用 LBound 函数可以确定数组某一维的下界。

所有维的下界均为 0。对于有这样维数的数组,UBound 函数返回以下结果:

Dim A(100,3,4)

语句返回值UBound(A, 1)100UBound(A, 2)3UBound(A, 3)4

清除数组元素 Erase 语句

Erase 语句

重新初始化固定大小数组的元素,并释放动态数组的存储空间。 www.aspxuexi.com asp学习网

Erase array

array 参数是要清除的数组变量的名称。

说明

判断数组是固定长度数组(常规)还是动态数组是很重要的,这是因为 Erase 要根据数组的类型进行不同的操作。Erase 无需为固定大小的数组还原内存。Erase 按照下表设置固定数组的元素:

数组的类型 Erase 对固定数组元素的影响

固定数值数组 将每个元素设置为 0。

固定字符串数组 将每个元素设置为零长度字符串 ("")。

对象数组 将每个元素设置为特殊值 Nothing。

Erase 释放动态数组所使用的内存。在程序再次引用该动态数组之前,必须使用 ReDim 语句来重新定义该数组变量的维数。

下面例子举例说明如何使用 Erase 语句。

Dim NumArray(9)

Dim DynamicArray()

ReDim DynamicArray(9) ' 分配存储空间。

Erase NumArray ' 每一元素都被重新初始化。

Erase DynamicArray ' 释放数组占用的内存。

过滤和筛选数组 Filter 函数

Filter 函数

返回下标从零开始的数组,其中包含以特定过滤条件为基础的字符串数组的子集。

Filter(InputStrings, Value[, Include[, Compare]])

参数

InputStrings

必选项。一维数组,要在其中搜索字符串。

Value

必选项。要搜索的字符串。

Include

可选项。Boolean 值,指定返回的子字符串是否包含 Value。如果 Include 为 True,Filter 将返回包含子字符串 Value 的数组子集。如果 Include 为 False,Filter 将返回不包含子字符串 Value 的数组子集。

Compare

可选项。数字值指出使用的比较字符串类型。请参阅值设置部分。

设置

Compare 参数可以有以下值:

常数 值 描述

vbBinaryCompare 0 执行二进制比较。

vbTextCompare 1 执行文本比较。

说明

如果在 InputStrings 中没有找到与 Value 匹配的值,Filter 将返回空数组。如果 InputStrings 为 Null 或者不是一维数组,则会发生错误。

由 Filter 函数返回的数组仅包含足以包含匹配项数目的元素。

下面例子利用 Filter 函数返回包含搜索条件 "Mon" 的数组:

Dim MyIndex 'www.aspxuexi.com

Dim MyArray (3)

MyArray(0) = "Sunday"

MyArray(1) = "Monday"

MyArray(2) = "Tuesday"

MyIndex = Filter(MyArray, "Mon") 'MyIndex(0) 包含 "Monday"。

判断对象是否为数组 IsArray 函数

参考:http://www.aspxuexi.com/rumen/2006-12-18/1790.htm

IsArray 函数

返回 Boolean 值指明某变量是否为数组。

IsArray(varname)

varname 参数可以是任意变量。

说明

如果变量是数组,IsArray 函数返回 True;否则,函数返回 False。当变量中包含有数组时,使用 IsArray 函数很有效。

下面的示例利用 IsArray 函数验证 MyVariable 是否为一数组:

Dim MyVariable

Dim MyArray(3)

MyArray(0) = "Sunday"

MyArray(1) = "Monday"

MyArray(2) = "Tuesday"

MyVariable = IsArray(MyArray) ' MyVariable 包含 "True"。

将数组链接为字符串,或者将字符串分解为数组 join 方法 和 Split 函数

参看:http://www.aspxuexi.com/vbscript/2006-4-28/asp_split.htm

join 方法

应用于: Array 对象

返回字符串值,其中包含了连接到一起的数组的所有元素,元素由指定的分隔符分隔开来。

arrayObj.join(separator)

参数

arrayObj

必选项。Array 对象。

separator

必选项。是一个 String 对象,作为最终的 String 对象中对数组元素之间的分隔符。如果省略了这个参数,那么数组元素之间就用一个逗号来分隔。

说明

如果数组中有元素没有定义或者为 null,将其作为空字符串处理。

示例

下面这个例子说明了 join 方法的用法。

function JoinDemo(){

var a, b;

a = new Array(0,1,2,3,4);

b = a.join("-");

return(b);

}

split请参考上面的文章。

从数据库中返回数组

getrows的使用参看

http://www.aspxuexi.com/sql/2006-4-29/NextRecordset_GetRows.htm

http://www.aspxuexi.com/sql/2007-1-16/1910.htm

其他参考:asp数组排序 http://www.aspxuexi.com/code/2006-5-13/Sort_ary.htm
<%

'asp学习网 数组排序的函数

Function NewOrder(sz)

Dim ali,icount,i,ii,j,itemp

ali=split(sz,",")

icount=UBound(ali)

For i=0 To icount

For j=icount - 1 To i Step -1

If j+1 <= UBound(ali) Then

If int(ali(j))<int(ali(j+1)) Then

itemp=ali(j)

ali(j)=ali(j+1)

ali(j+1)=itemp

End If

End If

Next

Next

For ii=0 to Ubound(ali)

If ii = Ubound(ali) Then

NewOrder = NewOrder & ali(ii)

Else

NewOrder = NewOrder & ali(ii) & ","

End If

Next

End Function

%>

调用方法:

<%

str = "234,54,294,2347,653,121,37,34578,4537,53,34,7,2,5768,2"

response.write NewOrder(str)

%>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: