我对会话变量和数组分配有疑问。
我有一个包含10行和20列的二维数组。然后示例1不起作用,示例2起作用:
示例1:
session('anAr')(5, 10) = 'ab'
response.Write '<br>The new value is ' & session('anAr')(5, 10)
会话的新值(&#39; anAr&#39;)(5,10)打印为空字符串。
示例2:
dim localAr: localAr = session('anAr')
locarAr(0)(5, 10) = 'abc'
session('anAr') = localAr
response.Write '<br>The new value is ' & session('anAr')(5, 10)
现在已完成会话更新(&#39; anAr&#39;)(5,10)。
虽然它有效,但我认为问题是所有session('anAr')
首先被复制到localAr,然后所有localAr都被复制到session('anAr')
。
如果有任何方法可以修改session('anAr')(5, 10)
而不将会话数组复制到本地数组,请专家告诉我吗?
答案 0 :(得分:1)
不幸的是,没有。你必须使用本地数组。
如果将数组存储在Session对象中,则不应尝试 直接改变存储数组的元素。例如, 以下脚本不起作用:
<% Session("StoredArray")(3) = "new value" %>
前面的脚本不起作用,因为Session对象是 作为集合实现。数组元素StoredArray(3)没有 收到新的价值。相反,该值被索引到 收集,覆盖存储在该位置的任何信息。
强烈建议您在会话中存储数组 对象,您在检索或更改之前检索数组的副本 数组的任何元素。当你完成使用时 数组,你应该再次将数组存储在Session对象中,这样 您所做的任何更改都会保存,如下所示 例如:
<%
'Creating and initializing the array
Dim MyArray()
Redim MyArray(5)
MyArray(0) = "hello"
MyArray(1) = "some other string"
'Storing the array in the Session object.
Session("StoredArray") = MyArray
Response.Redirect("file2.asp")
%>