Posted: 2004/11月/24 9:49上午 | IP記錄
|
|
|
用FOR循環執行重複操作
當你需要重複執行一組語句一定次數時,你可以使用一個FOR...NEXT循環,如下例所示:
<%
for i=1 to 500
%>
Hello Again!
<%
next
%>
在這個例子中,句子「Hello Again!」被在瀏覽器中打印500次。FOR語句和NEXT語句之間的任何語句都將被重複執行。甚至,像這個例子一樣,當循 環體內是HTML代碼時,它也將被重複執行。
通過使用關鍵字STEP,你可以構造反向的循環。考慮下面的例子:
<%
For i=500 to 1 step –1
%>
Hello Again!
<%
NEXT
%>
這個例子輸出與上一個例子完全相同的結果。但是,在這個例子中,FOR...LOOP循環從數字500開始,反向循環到1。
你可以在循環中使用不同的步長。在下面的例子中,變量i每次被增加10:
<%
for i=1 to 500 step 10
%> <%=i%><br>
<%
next
%>
你可以用EXIT FOR語句從一個FOR...LOOP循環退出。假定你在遍歷一個數組以找到某個字符串表達式的匹配值。當你已經找到了一個匹配 時,你不需要繼續執行循環:
<%
dim myarray(10)
myarray(4)=」Running Shoes」
for i=0 to ubound(myarray)
if myarray(i)=」Running Shoes」 then exit for
next
%>
在這個例子中,如果數組中某個元素的值與表達式「Running Shoes」相匹配,則立即退出FOR...NEXT循環。變量i的值等於被匹配的元素的索引值。
FOR EACH...NEXT語句於FOR...NEXT語句關係密切。FOR EACH...NEXT語句只適用於對數組或集合的元素進行循環,如下面的例子所示:
<%
dim myarray(10)
myarray(4)=」Running Shoes」
for each i in myarray
if i=」Running Shoes」 then exit for
next
%>
這個例子中的腳本與上一個例子完成相同的任務。當字符串表達式得到匹配時,立即退出循環。但是,當腳本完成時,變量i的值等於「 Running Shoes」。
與FOR...LOOP循環中不同,這裡的變量i不是作為一個計數器。而是代表循環所操作的數組或集合的每個成員的值。如果你想 顯示一個數組的所有元素的值,你可以這樣做:
<%
for each i in myarry
%>
<%=i%>
<%
next
%>
用WHILE和DO執行條件循環
當以指定的次數執行一組語句或顯示HTML代碼塊時,FOR...LOOP循環是有用的。但是,在許多情況下,當一個循環執行之 前,你並不知道它需要執行的次數。在這些情況下,你需要使用WHILE循環或DO循環。
WHILE循環當某個條件的真值保持為TRUE時,重複執行一組語句。考慮如下的例子:
<% TheFuture=DATEADD(「s」,15,TIME)
WHILE TIME<TheFuture
%>
<%=TIME%> : Waiting For The Future... <BR>
<% WEND
%> <B> The Future』s Here!</B>
在這個例子中,處在WHILE和WEND之間的所有語句被重複執行,直到時間過去15秒。WHILE語句測試當時時間是否小於存 儲在變量TheFuture中的時間。一旦當前時間大於或等於TheFuture,則退出循環。
DO循環與WHILE循環密切相關,但是更複雜。用DO循環,你可以構造當某個條件保持為真時重複執行的循環,也可以構造重複執 行直到某個條件為真的循環。這裡有一個例子:
<%
do while sentence<>」Hello There!」
sentence=」Hello There!」
%>
<%=sentence%>
<%
loop
%>
在這個例子中,當變量sentence的值不等於字符串」Hello There!」時,處在DO語句和LOOP語句之間的語句被重複執行。因為在循環體你變量sentence被賦了值」Hello There!」,WHILE條件只在第一次迭代時為TRUE。換句話說,這個DO循環體內的語句只執行一次,字符串」Hello There!」只被在屏幕上打印一次。
在這個例子中,當某個條件為真時則執行循環。你也可以構造一個一直執行直到某個條件為真的循環,如下例所示:
<% do until sentence=」Hello There!」
sentence=」Hello There!」
%>
<%=sentence%>
<%
loop
%>
這個腳本於上一個完成同樣的功能。DO循環只執行一次。一旦變量sentence的值等於」Hello There!」就不再執行循環。這個循環只執行一次,字符串」Hello There!」只在屏幕上打印一次。
如果你願意,你可以把表達式WHILE或UNTIL轉移到循環的底部,像這樣:
<%
do
sentence=」Hello There!」
%>
<%
loop until sentence=」Hello There!」
%>
使用DO循環時,你可以用EXIT DO語句退出循環。考慮如下的循環:
<%
do until 1<>1
exclaim=exclaim&」!」
if exclaim=」!!!!!」 then exit do
loop
%>
<%=exclaim%>
在這個例子中,DO循環一直執行到1等於1,換句話說,它永遠循環下去。然而,在每一次循環中,變量exclaim被追加一個感 歎號。當變量exclaim等於字符串」!!!!!」時,exit do語句強制退出循環。
當用WHILE或DO構造循環時,小心不要構造死循環。如果你偶爾構造了一個死循環,不要擔心。經過一定時間之後(通常是90秒 ),腳本會自動結束。
注意
你可以使用Sever對象的ScriptTimeOut屬性來控制一個腳本執行多長時間後就算超時。請參見第14章,「使用單個 Active Sever Page。」
|