The best way to do this would probably be to use session variables.
On each page of the form, start the script with
session_start();
Then register each array you want to carry across
session_register('array1', 'array2', etc.);
Note: for reliability and safety these lines should be effectively the first things on the pages; no outputting anything to the browser ahead of them, and avoid processing the form data from the previous page, too.
Once you've registered your session variables, depending on how your server is configured, you may need to do this:
$array1=&$HTTP_SESSION_VARS['array1'];
$array2=&$HTTP_SESSION_VARS['array2'];
etc.
So you can use $array1, $array2, etc. as aliases for the longer names. Like I said, this depends on how your server is set up; you may be able to get away without this. If you have to use $HTTP_POST_VARS and $HTTP_GET_VARS to get your form values, then you'll have to do this aliasing trick.
And that's it.
When session_start() is reached. PHP will look to see if a session with this browser is already running (using a cookie it stored on the browser, if the browser let it). If there isn't one, it starts one.
Then, for each variable you use session_register() on, PHP will look in its stored data for that session to see if the variable is in there. If it is, PHP uses the value it finds there (carried across from the previous page).
While PHP is processing the page script, it keeps track of each variable (of course!) and when finished, writes the current values of your session variables back into its stored session data, ready to be used again on the next page.