【问题标题】:ASP Dictionary [Key, Array] pairASP 字典 [Key, Array] 对
【发布时间】:2015-09-28 13:41:59
【问题描述】:

目标

我正在尝试制作一个在 ASP 中存储键(字符串)和值(数组)对的字典。

问题:

似乎 ASP 能够将数组存储为一个值,并且还能够返回该值(在数组中的任何点),但它不能更新该值?

我有什么

Dim myDict
Set myDict=Server.CreateObject("Scripting.Dictionary")

我用以下方式设置值:

myDict.add someKey, someArray

我检索:

myDict.Item(someKey)(somePosition)

但是,这不起作用:

myDict.Item(someKey)(somePosition) = "Hello"

【问题讨论】:

  • @Kaf:vb.net 和 asp.net 都不适合这里。重新标记。
  • try dim a(0), b : a(0) = "one" : b = a: a(0) = "two": Response.Write(b(0)) 数组被复制,因此更改一个不会改变另一个 - 您的分配行影响 copy 而不是原始数组

标签: arrays dictionary vbscript asp-classic


【解决方案1】:

为什么不定义一个类而不是一个数组呢?是的,ASP 已经在某种程度上支持类。

Class MyType
   public Value1
   public Value2
   public Value3
End Class

您可以像这样将它们插入字典中:

dim myVal

Set myVal = new MyType
myVal.Value1 = 1
myVal.Value2 = "foo"
myVal.Value3 = "bar"

Set myDict.Item("key") = myVal

并像这样修改:

myDict.Item("key").Value2 = "baz"

编辑:在每个项目中具有可变数量的值:

Set myDict.Item("key") = Server.CreateObject("Scripting.Dictionary")

myDict.Item("key").Item("var name") = "baz"

当我只需要一个可变的项目列表时,我会像这样使用字典:

dim myDict
Set myDict = Server.CreateObject("Scripting.Dictionary")

myDict.Item(myDict.Count) = "foo"
myDict.Item(myDict.Count) = "bar"
myDict.Item(myDict.Count) = "baz"

...并在一个简单的循环中获取值:

for each myValue in myDict.Items
    Response.Write "Value is: " & myValue & "<br />"
next

【讨论】:

  • 如果我在课堂上需要可变数量的“价值”,我该怎么办?
  • 好吧,您可以在类中包含字典(更多控制)或直接使用字典作为 myDict 中的项目,而不是 MyType。
【解决方案2】:

我认为那行不通。要修改该值,您需要删除该项目并添加一个新项目。

【讨论】:

  • 它是否允许存储和查看值但不能修改?
  • @CristianD 。我不确定。也许是微软保持数据结构高效的方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-19
  • 1970-01-01
  • 1970-01-01
  • 2012-09-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多