Copy a multi-dimentional array by Value (not by reference) in PHP.
- by Simon R
Language: PHP 
I have a form which asks users for their educational details, course details and technical details. When the form is submitted the page goes to a different page to run processes on the information and save parts to a database. HOWEVER(!) I then need to return the page back to the original page, where having access to the original post information is needed. 
I thought it would be simple to copy (by value) the multi-dimensional (md) $_POST array to $_SESSION['post']
session_start(); 
$_SESSION['post'] = $_POST;
However this only appears to place the top level of the array into $_SESSION['post'] not doing anything with the children/sub-arrays. 
An abbreviated form of the md $_POST array is as follows: 
Array
(
    [formid] = 2
    [edu] = Array
        (
            ['id'] = Array
                (
                    [1] = new_1
                    [2] = new_2
                )
            ['nameOfInstitution'] = Array
                (
                    [1] = 1
                    [2] = 2
                )
            ['qualification'] = Array
                (
                    [1] = blah 
                    [2] = blah
                )
            ['grade'] = Array
                (
                    [1] = blah
                    [2] = blah 
                )
        )
    [vID] = 61
    [Submit] = Save and Continue
)
If I echo $_SESSION['post']['formid'] it writes "2", and if I echo $_SESSION['post']['edu'] it returns "Array". If I check that edu is an array (is_array($_SESSION['post']['edu])) it returns true. If I echo $_SESSION['post']['edu']['id'] it returns array, but when checked (is_array($_SESSION['post']['edu]['id'])) it returns false and I cannot echo out any of the elements. 
How do I successfully copy (by value, not by reference) the whole array (including its children) to an new array?