返回列表 发帖

有效的在asp中利用数组

[这个贴子最后由cambrigelq在 2003/12/29 09:34pm 第 1 次编辑] 有效的在asp中利用数组 一个数组是一个基本的数据结构,它是由跟随若干数字的变量组成,代替了声明10个变量来代表10个值的过程,你可以声明一个数组,并且把10个元素存入到这个数组中。 就像声明其他变量一样,数组需要与其大小相同大的内存,因此他们非常高效。在数组中为了获得一个特殊的变量,你需要参考它的索引。一个数组中正确的索引值是从0到(下标-1),如果一个数组的大小是10,我们可以从0到9来索引元素。数组不是复杂的结构,记住,你可以像应用其他变量一样来应用数组中的变量,规则是一样的。 现在让我们看看如何定义一个数组,如何动态的更改数组的大小,一些有用的asp数组函数,在数组中如何查找元素和我们怎样在页面和页面之间传递数组。 定义一个简单的数组 有两种方法在asp中定义数组,让我们看看每种的例子: 方法一: MyArray = Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct", "Nov","Dec") 方法二: Dim myArray(2) myArray(0)="Jan" myArray(1)="Feb" 在方法一中,我们用一行定义整个数组,这种方法在数组中有特殊的用途,如上面那样只存储一年中的12个月。 在方法二中,我们在多行中用单独的元素定义值,如果你想从纪录中将不同的值存入数组元素中,或者在一个循环中定义每一个元素的值,就要用到这种方法,例如: Dim myArray(20) Dim I For I=0 to 20 Myarray(I)="This is message " & I Next 动态改变数组的大小 现在让我们看看动态改变数组的大小。为什么你要做这个?举例说如果你不知道一个查询中有多少项目,但是你又想把这些数据存入到数组中,这时你将不能用上面的方法,除非你获得了数据的总数然后声明数组。为了避免这些,我们看看其中的方法: DIM myArray() Dim I REDIM myArray(20) '将数组重新定义为20维 For I=0 to 20 MyArray(I)="This is item " & I Next 在上面的例子中,声明数组没有包含任何的数字项目,它的作用是告诉asp有一个数组被声明了,然后我们用REDIM语句来重新定义数组有20维,并且向其中存入数据。 有用的数组函数 Ubound(arrayName)函数 这个函数是返回数组的下标,也就是数组最后一个元素的标记。 Dim myArray(10) Dim I For I=0 to 10 MyArray(I)="Item " & I Next Response.write "ubound(myArray) = " & ubound(myArray) Lbound(arrayName)函数 这个函数是返回数组的上标,也就是数组第一个元素的标记。可以用上面的例子进行试验,不过不要忘了把Ubound换成Lbound哟! Split(string, splitby)函数 这个函数返回基于0的一维数组,其中包含指定数目的子字符串。这里有两个参数,string是一个字符串,sqlitby是分隔符,让我们看一个例子来理解这个函数的功能: Dim myString Dim myArray Dim I MyString = "a,b,c,d" MyArray = split(MyString,",") For I=0 to Ubound(MyArray) Response.write MyArray(I) & "
" Next 这个例子的意思是:将字符串"a,b,c,d"转换成一个有四个元素一维数组,其中字符串中的","是分隔符。最后我们用循环将这个数组显示出来。如果大家觉得不容易懂,可以自己上机调试一下就明白了,其实很简单。 在数组中查找元素 这有一个函数,它能返回数组中的元素索引。这个索引是数组元素的基本位置,如:0代表myArray(0)。 function findArray(arrName,srcStr) dim I dim pint,cnt cnt=0 for i=0 to ubound(arrName) if cnt=0 then if srcStr=arrName(i) then pint=i cnt=1 end if end if next findArray=pint+1 end function 现在我们来用一用这个函数: Dim myArray(20) Dim k For k=0 to 20 MyArray(k)="Item " & k Next Response.write findArray(myArray,"Item 8") & "

" Response.write myArray(findArray(myArray,"Item 8")) 赶紧在本机上调试一下,看看这个函数的功能。 向另一个页面传递数组 现在有很多种方法向另一页面传递数组,目前有三种方法: 定义一个又逗号分隔的字符串,然后再下一页中用Split函数重新建立数组。 将数组存储在一个Session变量中,然后在下一个页面中调用。 通过表单的隐含区域来传递数组,他们都是自动用逗号分开,然后再用Split函数重新建立数组。 前两种方法很好,但是都比第三中复杂。在这里我们将只介绍第三种,因为它是最简单最有效的。 1.asp: <% dim I dim myArray(20) for I=0 to 20 myArray(I)="Item " & I next %>

<% for I=0 to ubound(myArray) response.write "" next %>

以上我们做的是在一个表单中用单独的隐含域存储数组中的每个元素,我们再看看下一页: 2.asp <% dim arrString dim myArray dim I arrString=request("myArray") myArray = split(arrString,",") for I=0 to ubound(myArray) response.write "Item "&I&" = " & myArray(I) & "
" & vbCrLf next %>

返回列表 回复 发帖