经典ASP - 结合两个列表/数组

时间:2014-11-11 11:46:33

标签: arrays asp-classic

我正在使用一些js以一种形式重复额外的一对下拉列表,即

第1项:描述 - 尺寸
第2项:描述 - 尺寸
第3项:描述 - 尺寸

由于每个下拉列表具有相同的表单字段名称,因此这给出了两个逗号分隔的输出,例如

1, 2, 7 and 2, 5, 6

当我将这些内容写入我的数据库时,我需要将两个列表合并为:

(1, 2), (2, 5), (7, 6)

构建重复的SQL语句。我该如何实现这一目标?我尝试了各种各样的FOR循环,但似乎无法破解它。是否有一个我缺少的明显功能?

代码:

UniformItemArray=split(UniformItem,",")
UniformSizeArray=split(UniformSize,",")

iUniform=0
iSize=0
FOR EACH Uniform in UniformItemArray
  Response.Write("("&trim(Uniform)&",")

  FOR EACH Size in UniformSizeArray
    iSize=iUniform
    IF cint(iUniform)=cint(iSize) THEN
      Response.Write(Size)
    END IF
  NEXT
  Response.Write(") - ")
    iUniform=iUniform+1
  NEXT

这是回归:

(1,2 5 6) - (2,2 5 6) - (7,2 5 6) - 

我需要的是

(1,2) - (2,5) - (7,6) - 

我添加了括号和破折号以澄清。基本上,它在第一个数组中正确循环,但是尽管在第二个循环中添加了IF语句和各种其他排列,我无法让它显示第二个数组的正确值。 一旦我能够正确地获得此代码,我将使用它来构建SQL语句。

1 个答案:

答案 0 :(得分:1)

如果你的两个数组总是同步的(两个数组中元素的顺序匹配),那么这很简单。 不要使用For Each循环,只需使用标准的For循环,然后将Uniform作为您的计数器。

Dim UniformItemArray, UniformSizeArray
Dim Uniform, Uniforms

UniformItemArray = Split(UniformItem, ",")
UniformSizeArray = Split(UniformSize, ",")

If IsArray(UniformItemArray) Then
  Uniforms = UBound(UniformItemArray)
  For Uniform = 0 To Uniforms
    'Add a comma after the first iteration
    If Uniform > 0 Then Response.Write ","
    Response.Write "(" & UniformItemArray(Uniform) & "," & UniformSizeArray(Uniform) & ")"
  Next
End If