我希望能够做到:

For Each thing In things
End For

经典ASP - 不是.NET!

===============>>#1 票数:13

像这样的东西?

dim cars(2),x
cars(0)="Volvo"
cars(1)="Saab"
cars(2)="BMW"

For Each x in cars
  response.write(x & "<br />")
Next

www.w3schools.com

如果要关联键和值,请使用字典对象

Dim objDictionary
Set objDictionary = CreateObject("Scripting.Dictionary")
objDictionary.Add "Name", "Scott"
objDictionary.Add "Age", "20"
if objDictionary.Exists("Name") then
    ' Do something
else
    ' Do something else 
end if

===============>>#2 票数:4 已采纳

无论你的[事物]是什么,都需要在VBScript之外编写。

在VB6中, 您可以编写自定义集合类 ,然后您需要编译为ActiveX DLL并在Web服务器上注册它以访问它。

===============>>#3 票数:2

你最接近的是使用字典(如Pacifika所述)

Dim objDictionary
Set objDictionary = CreateObject("Scripting.Dictionary")
objDictionary.CompareMode = vbTextCompare 'makes the keys case insensitive'
objDictionary.Add "Name", "Scott"
objDictionary.Add "Age", "20"

但我像集合一样遍历我的词典

For Each Entry In objDictionary
  Response.write objDictionary(Entry) & "<br />"
Next

您可以通过这样的方式遍历整个字典,写出如下所示的值:

Scott
20

你也可以这样做

For Each Entry In objDictionary
  Response.write Entry & ": " & objDictionary(Entry) & "<br />"
Next

哪个会产生

 Name: Scott
 Age: 20

===============>>#4 票数:1

我之前使用过的一种方法是使用返回数组的集合的属性,该数组可以迭代。

Class MyCollection
    Public Property Get Items
        Items = ReturnItemsAsAnArray()
    End Property
    ...
End Class

迭代如下:

Set things = New MyCollection
For Each thing in things.Items
    ...
Next

===============>>#5 票数:0

正如Brett所说,最好使用vb组件来创建集合。 除非基于特定需求的应用程序,否则字典对象在ASP中不常用。

===============>>#6 票数:0

非常小心使用VB脚本字典对象!
只是发现这个“ autovivication ”的东西,原产于这个对象: http//en.wikipedia.org/wiki/Autovivification

所以,当你需要比较值时,千万不要使用像以下那样的漏洞比较:
If objDic.Item("varName") <> "" Then ......
这将自动将键“ varName ”添加到字典中(如果它不存在,具有空值),以便继续评估布尔表达式。

如果需要,请改用If objDic.Exists("varName")

只需花几天时间敲墙壁,这个Mcrosoft“ 功能 ”......
VBScript的词典对象创造-一个琴键其中,永不存在,但存在的功能于另一个对象

  ask by Ronnie translate from so

未解决问题?本站智能推荐: