在ASP中用execute 動態的創建數組
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
[p]今天找了下eval 沒法創建連續的變量,如"a1,a2,a3..."這樣的連續變量[br]而我希望創建"a1,a2,a3..."這樣有連續數組[br]百度上找了許多方法,在網絡上用許多人用了execute這個方法來創建如"a1,a2,a3..."這樣的連續變量,是可行的,于是我就用這個方法來創建連續的數組變量[br]arraystr=split("1|2|3,4|5|6,7|8|9",",")[br]for i=0 to ubound(arraystr)[br] execute "a"&i&"=split("""&arraystr(i)&""",""|"")"[br]next[br][br]=========================================[br]后來又在網上找到了這篇文章[br][color=#05006c][b]vbscript中的eval()函數[br][/b][color=#000000]javascript中的eval函數讓我們可以很方便地操作一系列變量(a1,a2,a3,……)。自從vbscript 5.0之后,我們也可以asp中使用這個功能了![br] 很感謝編程愛好者論壇上的朋友提出的難題,讓我多學到了這個很有用的函數。[br] 和javascript一樣,eval()也是計算其中字符串所代表變量的值并返回,如eval("a"&"1")返回a1的值。不過這個eval()的功能和javascript比起來還是有差距的。我試了一下,發現主要有以下一點:vbscript中的eval函數只能讀取返回值而不能為其中所代表變量賦值,即我們不可以用eval("a"&"1")為a1賦值。[br] 那位朋友提出的問題,是將接收到的一個長字符串("2005081200507120050612005051")按7個字符為一組依次賦給一系列變量a1,a2,a3,…。 [br] 如果是賦值予數組,那我們可以建立動態數組:[br] <%[br] use="2005081200507120050612005051"[br] dim myarray()[br] redim myarray(0)[br] for i=1 to len(use) step 7[br] redim myarray(ubound(myarray)+1) [/color][color=#663300]'將數組容量加1[/color][br][color=#000000] myarray(ubound(myarray))=mid(use,i,7)[br] next[br] %>[br] 現在要賦值給系列變量,我們得引入另外一個函數execute()。這個函數的作用是將其中字符串視為vbscript語句執行,如execute("a"&"1="&100")是執行以下語句:a1=100。[br] 據此,我們可以按那位朋友的要求寫出以下代碼:[br] <%[br] use="2005081200507120050612005051"[br] dim n [/color][color=#663300]'作為變量a后的索引1,2,3,…[/color][br][color=#000000] n=1[br] for i=1 to len(use) step 7[br] execute "dim a"&cstr(n)&":a"&cstr(n)&"="&mid(use,i,7)[br] [/color][color=#663300]'執行語句dim a:a1=mid(use,i,7)[/color][br][/color][color=#000000] n=n+1[br] next[br] %> [br]=======================================[br]這篇文章中提到了execute的用法[br]算是了解了eval和execute的區別[/color][/p]
該文章在 2010/6/7 23:44:34 編輯過 |
關鍵字查詢
相關文章
正在查詢... |