从for循环VBScript / Classic ASP中的数组中分配变量

时间:2014-07-14 13:21:14

标签: arrays loops vbscript asp-classic

我有一个for循环,它遍历从CSV文件生成的数组。这将创建一个包含1,2或3组数字的数组。问题是,我需要为这些变量分配一个变量,因为我需要稍后在Web表单中使用它们。也;有时在数组中可能只有一组数字(因此只有数组(1)是可能的)。我如何将动态数组分配给单个变量 - 即 - YXVal,XV和YYVal的RXVal和GXVal,YYVAL的RYVAL和GYVal - 但如果数组中只有1,那么它将是YXVal和YYVal。

Do while NOT objTextFile.AtEndOfStream
    arrStr = split(objTextFile.ReadLine,",")
    for x = 1 to ubound(arrStr) 
        if arrStr(0) = "x" Then         
            Xval = arrStr(x)            
            response.write(XVal & "<br />")
        end if
    next    
    for y = 1 to ubound(arrStr)
        if arrStr(0) = "y" Then
            Yval = arrStr(y)            
            response.write(YVal & "<br />")
        end if
    next                
Loop

1 个答案:

答案 0 :(得分:4)

这是一种直截了当的方式。如果您希望多次出现"x""y",并且您需要处理每次出现,则应在每次迭代开始时重新初始化变量值。否则,它们可能仍包含 last 迭代中的值。

Do Until objTextFile.AtEndOfStream

    ' Reinitialize variable values. This may be optional, depending on your needs.
    YXVal = "" : RXVal = "" : GXVal = "" : YYVal = "" : RYVal = "" : GYVal = ""

    ' Read a line...
    arrStr = Split(objTextFile.ReadLine, ",")
    intSize = UBound(arrStr)

    If intSize >= 0 Then

        ' Parse line values...
        Select Case LCase(arrStr(0))
            Case "x"
                If intSize > 0 Then YXVal = arrStr(1)
                If intSize > 1 Then RXVal = arrStr(2)
                If intSize > 2 Then GXVal = arrStr(3)
            Case "y"
                If intSize > 0 Then YYVal = arrStr(1)
                If intSize > 1 Then RYVal = arrStr(2)
                If intSize > 2 Then GYVal = arrStr(3)
        End Select

    End If

Loop