简体   繁体   English

Array_merge_recursive无法正确合并(php)

[英]Array_merge_recursive not merging correctly (php)

The following 2 array's are not merging right at [2015] like they're supposed to. 以下两个数组在[2015]时并没有像应该的那样正确合并。 instead it creates [2016] like in the last example. 而是像上一个示例一样创建[2016]。

code i'm using : 我正在使用的代码:

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

first array: ($current) 第一个数组:($ 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)

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! 提前致谢!

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). 根据您的描述,您将必须使用关联的数组(使用像“ 2015”这样的字符串索引),而不是数字索引(例如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 ) 我还建议使用唯一键作为事件的索引,并使用替代函数array_replace_recursive来防止PHP创建任何嵌套的数组(请参见http://php.net/manual/en/function.array-replace-recursive .php

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM