许多盆友在做程序开的时候肯定遇到过想动态定义变量的时候,但是asp却没有这样的直接定义功能,不得不遗憾的去用动态数组。虽然动态数组是个解决办法,但是有时候在特殊的地方动态数组实在是太费内存。
现在我来介绍下 asp 的动态变量如何使用。
asp本身不具备动态变量这样的东西,只是我们可以利用它的2个函数来 配合 完成 动态变量定义,并可以使用。
第一个函数 execute ,
这个函数并不陌生吧? 不错 它就是 执行函数,只要给一个字符串 它就执行。这里的字符串很特别哦,它的字符串里面如果包含了变量或者关系式 它都会按asp的语法去执行。所以举个例子:
dim str,a '定义2个变量
str = “a = 1” ‘str变量赋值了,他的值是一个字符串 a = 1
execute(str) '执行一次str
这里得到什么结果? 你猜。。。答案是得到结果是 a 被赋值了,为1.。 什么什么什么什么? 你不信?那输出一下看看。
response.write(a) '输出a
理解了吧? 换句话或 e-xecute 可以执行 asp 代码。只是 asp 代码你写成字符串的 形式。。只要保证 输出的字符串和 asp代码格式一致就行。
第二个函数 E-val
这个函数有时候很多人都没怎么用,它是 一个将字符串变为 变量 的 函数,请先不要激动,不要以为是把字符串变为了变量,如果你以为使用一下这个函数就可以直接使用 这个字符串当 变量了,那就错了。。
嗯,举例吧。。
“str” 这单独只是一个字符串。 E-val("str") 这个整体才是变量。。明白吗?
想使用它就直接把这个整体摆出去,像变量一样的用法。
现在 是是时候 两个一起用来 做个动态函数了。直接看下面的 例子:
dim i,num
for i=1 to 5
num = i +10
execute("a" & i & " = num")
next
' 循环执行完,这得到的结果是定义了变量 a1,a2,a3,a4,a5,并且为他们赋值了。注意的是num,虽然num写在字符串里面了,但是结果仍然得到的是 num 的值哦。我们只看括号里面的字符串运算结果是: 比如i=1 的时候 , a1 = num ,execute去执行这一句话,就是将 num 赋值给 a1 。如果我们想动态定义变量并赋值为字符串怎么办? 很简单,只要你保证括号里面的 最后得到的 字符串 符合 asp 语句的格式即可。如: execute("a" & i & " = ""I am string"" ").
所以上面的循环就动态的定义了几个变量。那么我们如何使用?
那就是 eval 函数的本事了,我们要使用 刚才 定义 a1 这个变量,
如果你直接使用 a1 这是 错误的。。。
正确使用方式是 eval("a1") ,这一个整体才是 我们想使用的 a1 变量。。。同时也可以动态使用哦。如 eval( "a" & i )
for i=1 to 5
response.write( eval("a" & i) )
next
明白了吗? 动态的变量使用它的时候要在他外面加 eval 函数。。。这样一个整体就成为了变量。。