我对经典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忍者!
答案 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, ",")