将一个数组分配给另一个Classic asp

时间:2011-07-08 16:32:34

标签: arrays asp-classic

我对经典asp很新,使用数组并不好玩:(

我一直在

上收到错误
            dim isMyApiResponse

            if MyAvailRooms = "Error" then
                isMyApiResponse = false
            else
                isMyApiResponse = true
                dim MyAvailArray()

                If InStr( MyAvailRooms, "," ) > 1 Then 
                    'response.write("<h2>MyAvailRooms is " & MyAvailRooms)
                    'response.write("<h2>var type of My avil rooms is " & VarType(MyAvailRooms))
                    MyAvailRooms = CStr(MyAvailRooms)
                    dim tempArray
                    tempArray = split(MyAvailRooms, ",")

                    dim sizeTempArray
                    sizeTempArray = UBound(tempArray)

                    response.write ("<h2>type of sizeTempArray is " &VarType(MyAvailArray))
                    response.write("<br/>type of temp array is " & VarType(tempArray))

                    reDim MyAvailArray(sizeTempArray)
                    MyAvailArray  = tempArray

                else 
                    ReDim MyAvailArray(1)
                    MyAvailArray (0) = MyAvailRooms
                end if
            end if

我上面的行“ MyAvailArray = tempArray ”上的类型不匹配。我想这是一个动态的固定阵列问题。两种类型都在我的reponse.write中以8204的形式返回,这是我认为的变体。

我在我的系绳结束时,请帮助我经典ASP忍者!

2 个答案:

答案 0 :(得分:2)

虽然我无法解释为什么会抛出错误:

MyAvailArray = tempArray

你可以循环遍历每个数组元素并逐个分配它们,它应该可以工作;)

Dim i
for i = 0 to sizeTempArray
    MyAvailArray(i) = tempArray(i)
next

答案 1 :(得分:1)

我一直无法使用Dim myArray()语法声明动态数组。我总是将我的数组声明为常规变体,这仍然允许我稍后使用ReDim语句。

(作为旁注,如果我需要一个空数组,我将使用没有参数的Array函数,即myArray = Array()。这样做的好处就是调用UBound函数将返回-1而不是给出错误,因此我可以轻松确定数组是否为空。)

Dim MyAvailArray

If InStr( MyAvailRooms, "," ) > 1 Then
    '<snip>'
    MyAvailArray = tempArray
Else 
    MyAvailArray = Array(MyAvailRooms)
End If

请注意,我使用Array功能是为了简洁。


顺便说一下,InStr检查是不必要的,因为Split将始终返回一个数组,即使分隔符不在字符串中。因此,您可以将代码重写为:

Dim MyAvailArray
MyAvailArray = Split(MyAvailRooms, ",")
相关问题