在Classic ASP中循环分配值

时间:2017-02-27 10:55:55

标签: vbscript asp-classic

我在这里设置了这个设置:

'highest number of days and lowest
niedrigsterTag = 8
hoechsterTag = 8

dim tageV(), tageB()
redim tageV(7), tageB(7)

'day-mapping
tageV(0) = replace(rs("TagVon"),"Mo", 1)
tageV(1) = replace(rs("TagVon"),"Di", 2)
tageV(2) = replace(rs("TagVon"),"Mi", 3)
tageV(3) = replace(rs("TagVon"),"Do", 4)
tageV(4) = replace(rs("TagVon"),"Fr", 5)
tageV(5) = replace(rs("TagVon"),"Sa", 6)
tageV(6) = 7

'for example: mo - fr
for each item in tageV
    'save smallest weekday
    if(isNumeric(item)) then
        if(item <= niedrigsterTag) then
            niedrigsterTag = item
            Response.write(niedrigsterTag)
            response.end()
        end if
    end if
next    

正如您可能看到的,我对经典ASP非常陌生。我不明白我的循环中缺少什么。在伪代码中,它看起来很好:

  

对于我的数组中的每个数值,检查item的当前值是否为&lt; =当前maxValue(hoechsterTag) - 这是第一次迭代8.如果是,则覆盖当前值。

现在我被卡住了。我在最内层response.end()添加了if。但是, niedrigsterTag 的值为7,而不是1。此外,在第一次迭代期间,item应为1,对吧?对我来说它是7.我想象response.end()相当于PHP die()

我想要实现的目标:

  

如果当前迭代&lt;当前值,覆盖它,所以我以最小的值结束。

我知道这是非常基本的,到目前为止我没有在其他语言中做这样的事情的问题。不知道为什么会这么特别。

感谢您提供任何提示和建议

1 个答案:

答案 0 :(得分:0)

当您将值分配给tageV数组时,您将它们指定为字符串,然后将它们与整数进行比较。您需要比较一个类似的数据类型。

另外,它们编写的方式如下:在第一次迭代中,如果项目为1且niedrigsterTag为8,则niedrigsterTag将更改为1,response.end将停止循环并退出。你需要的更像是这样:

'highest number of days and lowest
niedrigsterTag = 8
hoechsterTag = 8

dim tageV(), tageB()
redim tageV(7), tageB(7)

'day-mapping
tageV(0) = replace(rs("TagVon"),"Mo", 1)
tageV(1) = replace(rs("TagVon"),"Di", 2)
tageV(2) = replace(rs("TagVon"),"Mi", 3)
tageV(3) = replace(rs("TagVon"),"Do", 4)
tageV(4) = replace(rs("TagVon"),"Fr", 5)
tageV(5) = replace(rs("TagVon"),"Sa", 6)
tageV(6) = 7

'for example: mo - fr
for each item in tageV
    'save smallest weekday
    if(CInt(item) <= niedrigsterTag) then
            niedrigsterTag = CInt(item)
    end if
next  

Response.write("niedrigsterTag = " & niedrigsterTag)

循环遍历数组,每次找到较小的值时,都会为变量赋值。循环完成后,变量将保持最小值。

顺便说一下,你得到7的原因是因为那是唯一让它超过if语句的价值。