本文所说的 ASP 数组是指在 ASP 中以默认语言 VBScript 为语言的数组。
样例:
Dim MyArray()
for i = 0 to 10
ReDim Preserve MyArray(i)
MyArray(i)=i
next
下标
- ASP 数组的下标也是从 0 開始的。
- 要获取某个元素的值则在数组变量后面加上括号,括号里标明下标值,比方 arr(0),注意不是中括号,而是小括号。
定义
dim arr() ‘定义动态数组
dim arr2(2) ‘定义静态数组
dim arr2(2) ‘定义静态数组
在变量名称后面加上括号,就形成了数组。假设括号里指定了数值,就表示定义一个静态数组,即固定大小的数组。
代码中
- arr() 定义一个动态数组,须要重定义确定长度后才干使用,关于重定义请參见后面。
- arr2(2) 定义一个下标上限是 2(长度为 3)的静态数组,这与其它语言(比方 C#、JavaScript)有所不同,其它语言的括号里參数表示长度。
erase
erase 动态数组时释放动态数组的存储空间;erase 静态数组时,仅仅是初始化数组的元素值。
dim arr()
redim arr(2)
erase arr
alert(ubound(arr)) ‘错误,erase 已经将动态数组的存储空间所有释放。
dim arr(1)
erase arr
alert(ubound(arr)) ‘显示 1,erase 仅仅是初始化静态数组的元素值,其占用的空间还在。
redim arr(2)
erase arr
alert(ubound(arr)) ‘错误,erase 已经将动态数组的存储空间所有释放。
dim arr(1)
erase arr
alert(ubound(arr)) ‘显示 1,erase 仅仅是初始化静态数组的元素值,其占用的空间还在。
重定义 redim
对于动态数组,能够重定义,重定义之后也能够继续重定义;不能对静态数组进行重定义。
dim arr()
dim arr2(2)
dim arr3()
redim arr(0) ‘将数组 arr 的下标上限设为 0(长度为 1)。
redim arr2(1) ‘错误发生。
redim arr3(-1) ‘正确,能够设置为 -1,以表示这个数组长度为 0。
dim arr2(2)
dim arr3()
redim arr(0) ‘将数组 arr 的下标上限设为 0(长度为 1)。
redim arr2(1) ‘错误发生。
redim arr3(-1) ‘正确,能够设置为 -1,以表示这个数组长度为 0。
如上重定义数组将导致该数组原有赋值丢失。
重定义 redim preserve
前面讲到重定义数组将导致该数组原有赋值丢失,怎么能保证不丢失呢?用 redim preserve。
dim arr()
redim arr(1)
arr(0) = "1"
alert(arr(0)) ‘显示 1
redim preserve arr(2)
alert(arr(0)) ‘仍然显示 1
redim arr(1)
arr(0) = "1"
alert(arr(0)) ‘显示 1
redim preserve arr(2)
alert(arr(0)) ‘仍然显示 1
UBound
ASP 数组没有获取长度的属性或方法,仅仅有获取下标上限的方法-UBound(数组名称),即数组下标的最大值,比方 UBound(arr)。
dim arr(1)
Response.Write(UBound(arr)) ‘ 显示上限 1,数组长度为 2
dim arr2()
redim arr2(-1) ‘ 能够为动态数组 redim 上限为 -1,但不能为其它负数,比方 -2 就会报“内存不够”。
Response.Write(UBound(arr2)) ‘ 显示上限 -1,数组长度为 0
dim arr3()
‘Response.Write(UBound(arr3)) ‘ 错误发生
Response.Write(UBound(arr)) ‘ 显示上限 1,数组长度为 2
dim arr2()
redim arr2(-1) ‘ 能够为动态数组 redim 上限为 -1,但不能为其它负数,比方 -2 就会报“内存不够”。
Response.Write(UBound(arr2)) ‘ 显示上限 -1,数组长度为 0
dim arr3()
‘Response.Write(UBound(arr3)) ‘ 错误发生
Split
Split 将字符串分隔为数组,例如以下 arr2 是错误的。
dim arr
dim arr2() ‘错误,这里不能有括号。
arr = Split("1,2,3", ",")
arr2 = Split("1,2,3", ",")
dim arr2() ‘错误,这里不能有括号。
arr = Split("1,2,3", ",")
arr2 = Split("1,2,3", ",")
Dim MyArray()
for i = 0 to 10
ReDim Preserve MyArray(i)
MyArray(i)=i
next 样例:
for i = 0 to 10
ReDim Preserve MyArray(i)
MyArray(i)=i
next 样例:
Dim MyArray()
for i = 0 to 10
ReDim Preserve MyArray(i)
MyArray(i)=i
next 样例:
for i = 0 to 10
ReDim Preserve MyArray(i)
MyArray(i)=i
next 样例: