user3481441
user3481441

Reputation:

Array_merge_recursive not merging correctly (php)

The following 2 array's are not merging right at [2015] like they're supposed to. instead it creates [2016] like in the last example.

code i'm using :

$merge = array_merge_recursive($array, $current);

first array: ($current)

Array
(
    [Particulier] => Array
        (
            [Weekend] => Array
                (
                    [2015] => Array
                        (
                            [06] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 111
                                            [startDate] => 12-06-2015
                                            [endDate] => 15-06-2015
                                            [price] => 920
                                        )
                                )
                        )
                )
        )
)

second array: ($array)

Array
(
    [Particulier] => Array
        (
            [Weekend] => Array
                (
                    [2015] => Array
                        (
                            [05] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 90
                                            [startDate] => 01-05-2015
                                            [endDate] => 04-05-2015
                                            [price] => 920
                                        )
                                    [1] => Array
                                        (
                                            [id] => 91
                                            [startDate] => 08-05-2015
                                            [endDate] => 11-05-2015
                                            [price] => 920
                                        )
                                    [2] => Array
                                        (
                                            [id] => 92
                                            [startDate] => 15-05-2015
                                            [endDate] => 18-05-2015
                                            [price] => 920
                                        )
                                )
                            [06] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 112
                                            [startDate] => 19-06-2015
                                            [endDate] => 22-06-2015
                                            [price] => 920
                                        )
                                )
                        )
                )
            [Midweek] => Array
                (
                    [2015] => Array
                        (
                            [05] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 94
                                            [startDate] => 11-05-2015
                                            [endDate] => 15-05-2015
                                            [price] => 1225
                                        )
                                    [1] => Array
                                        (
                                            [id] => 95
                                            [startDate] => 18-05-2015
                                            [endDate] => 22-05-2015
                                            [price] => 1225
                                        )
                                )
                            [06] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 118
                                            [startDate] => 15-06-2015
                                            [endDate] => 19-06-2015
                                            [price] => 1225
                                        )
                                )
                        )
                )
        )
    [Clienten en patienten] => Array
        (
            [Weekend] => Array
                (
                    [2015] => Array
                        (
                            [05] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 105
                                            [startDate] => 01-05-2015
                                            [endDate] => 04-05-2015
                                            [price] => 645
                                        )
                                )
                        )
                )
        )
)

current result: ($merge)

Array
(
    [Particulier] => Array
        (
            [Weekend] => Array
                (
                    [2015] => Array
                        (
                            [05] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 90
                                            [startDate] => 01-05-2015
                                            [endDate] => 04-05-2015
                                            [price] => 920
                                        )
                                [1] => Array
                                    (
                                        [id] => 91
                                        [startDate] => 08-05-2015
                                        [endDate] => 11-05-2015
                                        [price] => 920
                                    )

                                [2] => Array
                                    (
                                        [id] => 92
                                        [startDate] => 15-05-2015
                                        [endDate] => 18-05-2015
                                        [price] => 920
                                    )
                            )
                        [06] => Array
                            (
                                [0] => Array
                                    (
                                        [id] => 112
                                        [startDate] => 19-06-2015
                                        [endDate] => 22-06-2015
                                        [price] => 920
                                    )
                            )
                    )
                [2016] => Array
                    (
                        [06] => Array
                            (
                                [0] => Array
                                    (
                                        [id] => 111
                                        [startDate] => 12-06-2015
                                        [endDate] => 15-06-2015
                                        [price] => 920
                                    )
                            )
                    )
            )

EDIT: expected result

Array
(
    [Particulier] => Array
    (
        [Weekend] => Array
        (
            [2015] => Array
            (
                [05] => Array
                (
                    [0] => Array
                    (
                        [id] => 90
                        [startDate] => 01-05-2015
                        [endDate] => 04-05-2015
                        [price] => 920
                    )

                    [1] => Array
                    (
                        [id] => 91
                        [startDate] => 08-05-2015
                        [endDate] => 11-05-2015
                        [price] => 920
                    )

                    [2] => Array
                    (
                        [id] => 92
                        [startDate] => 15-05-2015
                        [endDate] => 18-05-2015
                        [price] => 920
                    )

                )

                [06] => Array
                (
                    [0] => Array
                    (
                        [id] => 112
                        [startDate] => 19-06-2015
                        [endDate] => 22-06-2015
                        [price] => 920
                    )
                    [1] => Array
                    (
                        [id] => 111
                        [startDate] => 12-06-2015
                        [endDate] => 15-06-2015
                        [price] => 920
                    )
                )
            )
        )

If any other information is required, please ask! Thanks in advance!

Upvotes: 2

Views: 557

Answers (1)

Achim
Achim

Reputation: 46

From what you describe you will have to work with an associated array (using a string index like "2015") and not a numeric index (like 2015).

I would also suggest using a unique key as the index for the events and to use the alternative function array_replace_recursive to prevent PHP from creating any nested arrays (see http://php.net/manual/en/function.array-replace-recursive.php)

Upvotes: 3

Related Questions