用FOR循环执行重复操作

发表于:2007-06-30来源:作者:点击数: 标签:
用FOR循环执行重复操作 当你需要重复执行一组语句一定次数时,你可以使用一个FOR...NEXT循环,如下例所示: % for i=1 to 500 % Hello Again! % next % 在这个例子中,句子“Hello Again!”被在浏览器中打印500次。FOR语句和NEXT语句之间的任何语句都将被重

用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。”

原文转自:http://www.ltesting.net