I wrote a post, came up with an alternative solution, and then deleted the post... I think I have something you can use.
Originally I didn't think this could be done, and I had suggested using a database and serializing the array into a database record, with a unique identifier, and passing the identifer in the hidden field so you could unserialize the array.
Instead of doing that, if you serialize the array, and make the contents of the hidden field equal to the serialized result of the array, you should be able to unserialize from that form field on the next page and get your array back. Serializing an object makes it into a string, so you shouldn't have any problems putting that into a hidden form field, unless there is some limitation on the hidden form field I am unaware of. Of course, there may be a limit on the size of the array that can be passed using this method.