I am trying to add multiple strings into a multidimensional array in VBScript. I hope I can explain it in a short way: Every string contains some data separated by commas. Now I would like to add all these data into an array, one dimension for every string.
For example
Dates = "12.02.2016, 13.08.2017, 19.05.2018"
Temperatures = "23.1, 24.9, 75.3"
Humidity = "26, 29, 95"
It is no Problem to get every String into an one dimensional array by using
AmbientConditionsArray = Split(Dates, ", ")
But I really have no idea to get it into a two dimensional array like
AmbientConditionsArray(0,0) = Date1
AmbientConditionsArray(0,1) = Temperature1
AmbientConditionsArray(0,2) = Humidity1
AmbientConditionsArray(1,0) = Date2
AmbientConditionsArray(1,1) = Temperature2
AmbientConditionsArray(1,2) = Humidity2
and so on.
While you can use a multidimensional array, it will be comparatively cumbersome.
How about simply using three separate regular arrays?
Dates = Split("12.02.2016, 13.08.2017, 19.05.2018", ", ")
Temperatures = Split("23.1, 24.9, 75.3", ", ")
Humidity = Split("26, 29, 95", ", ")
to work with them as a block of values I would use a dictionary.
Dim AmbientConditions
Set AmbientConditions = CreateObject("Scripting.Dictionary")
AmbientConditions.Add "Dates", Split("12.02.2016, 13.08.2017, 19.05.2018", ", ")
AmbientConditions.Add "Temperatures", Split("23.1, 24.9, 75.3", ", ")
AmbientConditions.Add "Humidity", Split("26, 29, 95", ", ")
Later you can access individual values in a readable manner:
MsgBox AmbientConditions("Humidity")(1)
' -> shows "29"
@Tomalak's answer is a neat way of doing it but in case you did want a native Multi-Dimensional Array approach closer to your original request you would use a Dynamic Array, like this.
Option Explicit
'Named constants for the three dimensions
Const COND_DATE = 0
Const COND_TEMPERATURE = 1
Const COND_HUMIDITY = 2
Dim Dates, Temperatures, Humidity, i
Dim AmbientConditions()
Dates = Split("12.02.2016, 13.08.2017, 19.05.2018", ", ")
Temperatures = Split("23.1, 24.9, 75.3", ", ")
Humidity = Split("26, 29, 95", ", ")
ReDim AmbientConditions(2, UBound(Dates))
For i = 0 to Ubound(Dates)
AmbientConditions(COND_DATE, i) = Dates(i)
AmbientConditions(COND_TEMPERATURE, i) = Temperatures(i)
AmbientConditions(COND_HUMIDITY, i) = Humidity(i)
Next
For i = 0 To UBound(AmbientConditions, 2)
WScript.Echo AmbientConditions(COND_DATE, i)
WScript.Echo AmbientConditions(COND_TEMPERATURE, i)
WScript.Echo AmbientConditions(COND_HUMIDITY, i) & vbCrLf
Next
Output:
12.02.2016 23.1 26 13.08.2017 24.9 29 19.05.2018 75.3 95
Also followed @Tomalak's suggestion to use Named Constants for the various dimensions.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With