Merge em all

There are quite a few functions and methods available:

Cake's Hash::merge() (former Set::merge) | array_merge() (pretty much the same than Cake's am() function) | array_merge_recursive()

The produce different results. So it's good to know when which of those merging methods should be best used. See for yourself.

The two arrays we want to merge:
Array
(
    [root] => Array
        (
            [deep1] => Array
                (
                    [deeper1a] => value1a
                    [deeper2b] => value2b
                )

            [deep2] => Array
                (
                    [0] => deeper1
                    [1] => deeper2
                )

            [deep3] => stringX
        )

)
Array
(
    [root] => Array
        (
            [deep1] => Array
                (
                    [deeper1a] => value1a
                    [deeper3b] => value3b
                )

            [deep2] => Array
                (
                    [0] => deeper1
                    [1] => deeper3
                )

            [deep3] => stringY
        )

)
Result:
Array
(
    [root] => Array
        (
            [deep1] => Array
                (
                    [deeper1a] => value1a
                    [deeper3b] => value3b
                )

            [deep2] => Array
                (
                    [0] => deeper1
                    [1] => deeper3
                )

            [deep3] => stringY
        )

)

Notes