Извлечение переменной из массива vbscript - PullRequest
0 голосов
/ 22 мая 2019

У меня есть эти переменные

STATE_Newverifdetaillibelle_208="test"   
STATE_Newverifdetaillibelle_209=""    
STATE_Newverifdetaillibelle_210=""    
STATE_Newverifdetaillibelle_211=""    
STATE_Newverifdetaillibelle_212=""    
STATE_Newverifdetaillibelle_213=""    
STATE_Newverifdetaillibelle_214=""    
STATE_verifmoduleid="208, 209, 210, 211, 212, 213, 214"

Так что я хотел бы получить переменную, которая не является пустой, на основе списка / массива

В моем примере STATE_verifmoduleid содержит следующее:

STATE_verifmoduleid="208, 209, 210, 211, 212, 213, 214"

Таким образом, я должен поймать только STATE_Newverifdetaillibelle_208="test", потому что он не пустой.

Я написал этот код, но он не возвращает значение "TEST", содержащееся в переменной STATE_Newverifdetaillibelle_208="test"

Dim STATE_Newverifdetaillibelle_(1000)
Dim verifmoduleid

'Here the code of the form/request.form, bla bla bla which is working ...

Dim CheckVerifyModulesIDs,CheckVerifyModulesID, Citems

CheckVerifyModulesIDs = replace(STATE_verifmoduleid," ","")
CheckVerifyModulesID = Split(CheckVerifyModulesIDs,",")

For each Citems in CheckVerifyModulesID
    if (STATE_Newverifdetaillibelle_(Citems)) <> "" then
        response.write (STATE_Newverifdetaillibelle_(Citems)) & "<br>"
    end if
next

Как я могу это исправить?

1 Ответ

0 голосов
/ 22 мая 2019

Все переменные STATE_Newverifdetaillibelle_* объявляются отдельно, поэтому вам нужно динамически строить каждое имя переменной как строку и оценивать эту строку как выражение.

STATE_Newverifdetaillibelle_208 = "test"   
STATE_Newverifdetaillibelle_209 = ""    
STATE_Newverifdetaillibelle_210 = ""    
STATE_Newverifdetaillibelle_211 = ""    
STATE_Newverifdetaillibelle_212 = ""    
STATE_Newverifdetaillibelle_213 = ""    
STATE_Newverifdetaillibelle_214 = ""    
STATE_verifmoduleid = "208, 209, 210, 211, 212, 213, 214"

' Here the code of the form/request.form, bla bla bla which is working ...

ids  =  Split(Replace(STATE_verifmoduleid," ",""),",")

For Each id in ids
    v = Eval("STATE_Newverifdetaillibelle_" & id)
    If v <> "" then
        Response.Write v & "<br>"
    End If
Next

Другой способ - поместить все значения в массив или словарь, тогда нет необходимости использовать Eval.

...