今天找了下eval 沒法創(chuàng)建連續(xù)的變量,如"a1,a2,a3..."這樣的連續(xù)變量
而我希望創(chuàng)建"a1,a2,a3..."這樣有連續(xù)數(shù)組
百度上找了許多方法,在網(wǎng)絡(luò)上用許多人用了execute這個(gè)方法來創(chuàng)建如"a1,a2,a3..."這樣的連續(xù)變量,是可行的,于是我就用這個(gè)方法來創(chuàng)建連續(xù)的數(shù)組變量
arraystr=split("1|2|3,4|5|6,7|8|9",",")
for i=0 to ubound(arraystr)
execute "a"&i&"=split("""&arraystr(i)&""",""|"")"
next
=========================================
后來又在網(wǎng)上找到了這篇文章
vbscript中的eval()函數(shù)
javascript中的eval函數(shù)讓我們可以很方便地操作一系列變量(a1,a2,a3,……)。自從vbscript 5.0之后,我們也可以asp中使用這個(gè)功能了!
很感謝編程愛好者論壇上的朋友提出的難題,讓我多學(xué)到了這個(gè)很有用的函數(shù)。
和javascript一樣,eval()也是計(jì)算其中字符串所代表變量的值并返回,如eval("a"&"1")返回a1的值。不過這個(gè)eval()的功能和javascript比起來還是有差距的。我試了一下,發(fā)現(xiàn)主要有以下一點(diǎn):vbscript中的eval函數(shù)只能讀取返回值而不能為其中所代表變量賦值,即我們不可以用eval("a"&"1")為a1賦值。
那位朋友提出的問題,是將接收到的一個(gè)長(zhǎng)字符串("2005081200507120050612005051")按7個(gè)字符為一組依次賦給一系列變量a1,a2,a3,…。
如果是賦值予數(shù)組,那我們可以建立動(dòng)態(tài)數(shù)組:
<%
use="2005081200507120050612005051"
dim myarray()
redim myarray(0)
for i=1 to len(use) step 7
redim myarray(ubound(myarray)+1) '將數(shù)組容量加1
myarray(ubound(myarray))=mid(use,i,7)
next
%>
現(xiàn)在要賦值給系列變量,我們得引入另外一個(gè)函數(shù)execute()。這個(gè)函數(shù)的作用是將其中字符串視為vbscript語(yǔ)句執(zhí)行,如execute("a"&"1="&100")是執(zhí)行以下語(yǔ)句:a1=100。
據(jù)此,我們可以按那位朋友的要求寫出以下代碼:
<%
use="2005081200507120050612005051"
dim n '作為變量a后的索引1,2,3,…
n=1
for i=1 to len(use) step 7
execute "dim a"&cstr(n)&":a"&cstr(n)&"="&mid(use,i,7)
'執(zhí)行語(yǔ)句dim a:a1=mid(use,i,7)
n=n+1
next
%>
=======================================
這篇文章中提到了execute的用法
算是了解了eval和execute的區(qū)別
該文章在 2010/6/7 23:44:34 編輯過