# Arrays in Rev

Alex Tweedly alex at tweedly.net
Sat Dec 11 09:17:54 EST 2004

```At 00:50 11/12/2004 -0600, Ken Ray wrote:
>(I put out a small "dissertation" on arrays at that time:
>http://lists.runrev.com/pipermail/use-revolution/2004-July/039379.html)

Thank you - I found it useful then (I was new to Rev at the time), and
found it even more useful to go back and re-read it now, with a slightly
better understanding of the different ways to do things in Rev. It should,
IMHO, be in a FAQ or Wiki or some such place, not just in the mail archives.

(Wasn't someone starting a community FAQ ? )

I do have one question about it ....

>Revolution:
>   put "1,Troy,Ken,Richard"&cr&"2,Kevin,Jan,Judy" into myList
>   split myList by CR and ","
>   put myList[2] into tempArray
>   --> Kevin,Jan,Judy
>   split tempArray by ","
>   put tempArray[1]
>   --> Kevin
>
>But note that this is NOT usually something you'd do in Rev... Director is
>designed to be able to make arrays of arrays, and although Rev can simulate
>this, it is not the most efficient, nor is it the best approach. One reason
>is that if you'll notice, I had to add line numbers before each line in
>myList so that when I used 'split' I could reference the array by number.
>Why? Because remember that no matter what it may appear to be, Rev uses
>associative arrays ONLY - myList[1] is NOT numeric... it is creating a
>*string* called "1" that is associated with the value that you give it.

I don't get it. You need the second "split" to split up the entries Kevin
and Jan and Judy - so why use the second delimiter in the first split.
Couldn't you just do ....

Revolution:
put "Troy,Ken,Richard"&cr&"Kevin,Jan,Judy" into myList   -- NB no numbers !!
split myList by CR     -- note - no second delimiter
put myList[2] into tempArray
--> Kevin,Jan,Judy
split tempArray by ","
put tempArray[1]
--> Kevin

>In any event, we really do need better array manipulation for
>multidimensional arrays (or simulated ones). Personally, I'd rather have the
>real thing if we can get it; if not, I'd accept simulated ones as long as we
>have accessor functions to get at the embeded data more easily.

I agree - though I'm not sure it's possible to get a good enough simulation
to satisfy what I'd like.
I want to be able to do things like
put "here's the string" into myArray1["asdf"]
put myArray1 into myArray2[3]
put myArray2[3] into tVar

and have tVar now be an array.

While I'm talking about what I'd like regarding arrays, I'd love to have
the multi-assignment form of a repeat structure as in PHP or Python. I know
it doesn't, strictly speaking, add functionality, but I think it's a huge
gain in readability. What I mean is to be able to say something like

repeat for each keyvalue  K,V in myArray
-- K takes each key in turn
-- V takes the corresponding value from the array

so it's equivalent to
repeat for each line K in the keys of myArray
put myArray[K] into V
but is (IMHO) much more readable (and probably a bit more efficient).

-- Alex.
```