Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vbscript ASP Classic如何更改由另一个数组(不是真正的二维数组)持有的数组的长度_Vbscript_Asp Classic - Fatal编程技术网

Vbscript ASP Classic如何更改由另一个数组(不是真正的二维数组)持有的数组的长度

Vbscript ASP Classic如何更改由另一个数组(不是真正的二维数组)持有的数组的长度,vbscript,asp-classic,Vbscript,Asp Classic,我需要有一个2d数组,其中第二个数组的长度根据具体情况而变化。为此,我制作了一个数组,其中包含具有以下代码的其他数组: Dim timeline ReDim timeline(days) for reDate = beginDate to endDate timeline(DateDiff("d", beginDate, reDate)) = Array(0) next 我遇到的问题是,我无法更改timeline中包含的任何数组的大小,因为我这样做

我需要有一个2d数组,其中第二个数组的长度根据具体情况而变化。为此,我制作了一个数组,其中包含具有以下代码的其他数组:

 Dim timeline
    ReDim timeline(days)

    for reDate = beginDate to endDate 
        timeline(DateDiff("d", beginDate, reDate)) = Array(0)
    next

我遇到的问题是,我无法更改timeline中包含的任何数组的大小,因为我这样做时ReDim似乎不起作用。有人知道我会怎么做吗?

试试下面的代码片段,使用
a
作为临时数组变量

Dim timeline, a
ReDim timeline(days)

' initial fill the array
For reDate = beginDate to endDate
    a = Array()
    ReDim a(99)
    timeline(DateDiff("d", beginDate, reDate)) = a
Next

' redim sub arrays
For reDate = beginDate to endDate
    ' assign subarray to a
    a = timeline(DateDiff("d", beginDate, reDate))
    ' redim a
    ReDim Preserve a(199)
    ' put changed array into root array
    timeline(DateDiff("d", beginDate, reDate)) = a
Next
在这种情况下,每个子阵列先包含100个元素,再包含200个元素。没有代码/上下文的“不工作”和错误消息(“需要对象”)不是提问的最佳方式。第一是完全浪费时间;第二个可能表示您在不应该使用的地方使用了
Set
(VBScript数组不是对象,因此代码中不应该有任何
Set

这证明了@omegastripes指出的相同事实,但也暗示了可能存在的陷阱:

Option Explicit

Dim AoA : AoA = Split("s o m e|w o r d s|o f|d i f f e r e n t|l e n g t h", "|")
Dim i
For i = 0 To UBound(AoA)
    AoA(i) = Split(AoA(i))
Next
WScript.Echo "----- test data:"
For i = 0 To UBound(AoA)
    WScript.Echo Join(AoA(i), "")
Next
WScript.Echo "----- array assignment copies (For Each elem ... does not 'work'):"
Dim e
For Each e In AoA
    e = "zap"
Next
For Each e In AoA
    WScript.Echo Join(e, "")
Next
WScript.Echo "----- array assignment copies (change needs index access):"
For i = 0 To UBound(AoA)
    e = AoA(i)
    e(0) = UCase(e(0)) ' just changes the copy (e)
    WScript.Echo Join(e, "")
    AoA(i)(1) = UCase(AoA(i)(1)) ' access via indices changes org collection
    WScript.Echo Join(AoA(i), "")
Next
WScript.Echo "----- replace whole subarrays (re-dimensioned dynamically):"
Dim n, m
For i = 0 To UBound(AoA)
    e = AoA(i)
    n = UBound(e)
    ReDim Preserve e(n * 2 + 1)
    For m = n + 1 To UBound(e)
        e(m) = UCase(e(m - n - 1))
    Next
    AoA(i) = e ' replace whole element
    WScript.Echo Join(AoA(i), "")
Next
输出:

cscript 37951664.vbs
----- test data:
some
words
of
different
length
----- array assignment copies (For Each elem ... does not 'work'):
some
words
of
different
length
----- array assignment copies:
Some
sOme
Words
wOrds
Of
oF
Different
dIfferent
Length
lEngth
----- replace whole subarrays:
sOmeSOME
wOrdsWORDS
oFOF
dIfferentDIFFERENT
lEngthLENGTH

不是每个子阵列都是a,所以我会有a的天拷贝,而不是唯一的天子阵列?分配给每个人后,我将如何调整他们的大小?我不确定这是否重要,因为当我试图检查它的时候,我在a上得到了一个需要的对象哈哈