创建和修改数组

当你需要存储一组相关的值时，你应该使用数组。数组是一个可以存储一组值的变量。例如，你可以创建一个数组，用来存储你的站点上出售的一系列商品：

<%

DIM Product(10)

Product(0)=

”Trading Card”

Product(1)=

”Book on Active Sever Pages”

Producr(2)=

”Computer Monitor”

%>

在这个例子中，DIM语句用来声明一个数组。与前面讨论的变量不同，数组在使用之前必须声明。这个DIM语句声明了一个可以存储11个值的数组。

注意

VBScript中数组的下标从0开始，因此每个数组的元素个数都比声明语句中的数字多1。（用刚才讨论的数组Product，你可以存储11个值。）如果你试图存储更多的 数据，则将发生错误。

声明了一个数组之后，你可以用一个索引为它的元素分配数值。在上面的例子中，索引值为1的数组元素被分配了值“Book on Active Sever Pages”。如果你想输出这个元素的值，你可以用这样的语句：

<%=Product(1) %>

上例中数组的作用与一个列表相似。它有一个索引，可以用来引用所有的元素。你也可以创建有多个索引的数组。考虑如下的例子：

<%

DIM Product(10,1)

Product(0,0)=

”Trading Card”

Product(0,1)=

”A very valuable trading card.”

Product(1,0)=

”Book on Active Sever Pages”

Product(1,1)=

”A comprehensive book on Active Sever Pages”

Product(2,0)=

”computer Monitor”

Product(2,1)=

”This monitor is in excellent shape.”

%>

这个脚本中DIM语句创建了一个多维数组。这个数组的作用与一个表相似；第一个索引指定行，第二个索引指定列。

这个数组保存了产品名字和产品描述。要指向一个特定的产品，你应使用第一个索引，要指定产品名字或产品描述，应使用第二个索引。

使用数组时，并不只限于使用二维数组。你可以声明直到60维的数组。要创建一个多维数组，只要简单地在数组声明语句中增加一个维数即可。象这样：

DIM Product(10,10,10,10)

这个声明创建了一个四维数组，每一维可以存储11个元素。这意味着这个数组共可以保存14,641个数值（11*11*11*11=14.641）。可以看到，随着维数的增加，数组的大小增加得很快。

目前讨论过的只限于固定大小的数组。一旦你声明了一个固定大小的数组，你将不能改变数组中的元素个数。要改变一个固定数组的大小，你必须删除它再重新创建。然而，VBScript另外有一种动态数组。这里有一个例子：

<%

DIM Product()

REDIM Product(2)

Product(0)=

”Trading Card”

Product(1)=

”Book on Active Sever Pages”

Product(2)=

”Computer Monitor”

REDIM PRESERVE Product(3)

Product(3)=

”Coffee Cup”

%>

在这个例子中，DIM语句把数组Product声明为动态数组。当你声明一个动态数组时，你不需要指定数组的维数。在你第一次给一个动态数组分配数值之前，你必须用REDIM语句指定它的维数。

这个例子中，数组Product首先被创建为只能有三个元素。接下来，再次使用REDIM语句，增大了这个数组的大小。该数组被重定义维数以包含四个元素。这使你可以把值“Coffee Cup”保存在重定义的数组中。

注意第二个REDIM语句中关键字PRESERVE的使用。当一个数组被重设维数时，这个关键字保存该数组中的内容。如果你不使用这个关键字，数组中的所有数据都会丢失。

你可以用REDIM语句增加维数，也可以减少维数。你还可以用REDIM语句增大或减小一个特定维的大小。但是，当你删除某一维或减小某一维的大小时，你将会丢失数据。

例如，假设你在上一个例子中把REDIM PRESERVE Product(2)作为最后一个语句，在这种情况下，你将不能再使用Product(3)。数据“Coffe Cup

”将会从数组Product中丢失。

用关键字PRESERVE，你只能修改一个多维数组的最后一维。你可以增大最后一维，不丢失数据，或减小最后一维，丢失一部分数据。但是，当你增加或减少维数时，你无法保存数组中的数据。

用REDIM语句，你可以扩展或减缩一个数组任意多次。当你从数据库中取出数据时，你将会发现这个特性是很有用的。在本书的第五部分，“数据组件”中，你将学习这方面的内容。