3

I am sorry if the title is not clear enough. I have the following debugged array:

Array
(
    [output] => Array
        (
            [0] => Array
                (
                    [item] => Gear 2 (1PA-1111-00)
                    [item_number] => 1PA-1111-00
                    [item_id] => 227
                    [routes] => Array
                        (
                            [227-DELIVERY] => Array
                                (
                                    [line_name] => Distribution
                                    [pid] => 48
                                    [rid] => 605
                                    [level] => 1
                                    [item_id] => 227
                                    [subpart_id] => 227
                                    [subpart_name] => + 1PA-E5514-00
                                    [selected_capacity] => 1500
                                    [capacity] => 1500
                                    [capacity_ot2] => 0
                                    [capacity_ot4] => 0
                                    [dates] => Array
                                        (
                                            [2015-12-15] => 1200
                                        )

                                )

                            [227-Inspection] => Array
                                (
                                    [line_name] => QC
                                    [pid] => 35
                                    [rid] => 606
                                    [level] => 1
                                    [item_id] => 227
                                    [subpart_id] => 227
                                    [subpart_name] => 
                                    [selected_capacity] => 1500
                                    [capacity] => 1500
                                    [capacity_ot2] => 0
                                    [capacity_ot4] => 0
                                    [dates] => Array
                                        (
                                            [2015-12-14] => 1200
                                        )

                                )

                            [227-N/C Finishing ] => Array
                                (
                                    [line_name] => Line 33
                                    [pid] => 29
                                    [rid] => 607
                                    [level] => 1
                                    [item_id] => 227
                                    [subpart_id] => 227
                                    [subpart_name] => 
                                    [selected_capacity] => 2793
                                    [capacity] => 2793
                                    [capacity_ot2] => 3142
                                    [capacity_ot4] => 3491
                                    [dates] => Array
                                        (
                                            [2015-12-11] => 1200
                                        )

                                )

                            [227-Heat Treatment] => Array
                                (
                                    [line_name] => Line 32
                                    [pid] => 26
                                    [rid] => 608
                                    [level] => 1
                                    [item_id] => 227
                                    [subpart_id] => 227
                                    [subpart_name] => 
                                    [selected_capacity] => 1024
                                    [capacity] => 1024
                                    [capacity_ot2] => 0
                                    [capacity_ot4] => 0
                                    [dates] => Array
                                        (
                                            [2015-12-08] => 1024
                                            [2015-12-07] => 1024
                                        )

                                )

                            [227-Hobbing] => Array
                                (
                                    [line_name] => Line 12
                                    [pid] => 5
                                    [rid] => 609
                                    [level] => 1
                                    [item_id] => 227
                                    [subpart_id] => 227
                                    [subpart_name] => 
                                    [selected_capacity] => 4352
                                    [capacity] => 4352
                                    [capacity_ot2] => 4896
                                    [capacity_ot4] => 5440
                                    [dates] => Array
                                        (
                                            [2015-12-04] => 2048
                                        )

                                )

                            [227-Shaper] => Array
                                (
                                    [line_name] => Line 12
                                    [pid] => 9
                                    [rid] => 610
                                    [level] => 1
                                    [item_id] => 227
                                    [subpart_id] => 227
                                    [subpart_name] => 
                                    [selected_capacity] => 2591
                                    [capacity] => 2591
                                    [capacity_ot2] => 2915
                                    [capacity_ot4] => 3239
                                    [dates] => Array
                                        (
                                            [2015-12-03] => 2048
                                        )

                                )

                            [227-Incoming] => Array
                                (
                                    [line_name] => QC
                                    [pid] => 38
                                    [rid] => 611
                                    [level] => 1
                                    [item_id] => 227
                                    [subpart_id] => 227
                                    [subpart_name] => 
                                    [selected_capacity] => 500
                                    [capacity] => 500
                                    [capacity_ot2] => 562
                                    [capacity_ot4] => 624
                                    [dates] => Array
                                        (
                                            [2015-12-01] => 500
                                            [2015-11-30] => 500
                                            [2015-11-27] => 500
                                            [2015-11-26] => 500
                                            [2015-11-25] => 500
                                        )

                                )

                            [227-LATHE MATERIAL] => Array
                                (
                                    [line_name] => Outsource
                                    [pid] => 50
                                    [rid] => 612
                                    [level] => 1
                                    [item_id] => 227
                                    [subpart_id] => 227
                                    [subpart_name] => 
                                    [selected_capacity] => 500
                                    [capacity] => 500
                                    [capacity_ot2] => 2915
                                    [capacity_ot4] => 3239
                                    [dates] => Array
                                        (
                                            [2015-12-01] => 500
                                            [2015-11-30] => 500
                                            [2015-11-27] => 500
                                            [2015-11-26] => 500
                                            [2015-11-25] => 500
                                        )

                                )

                            [227-FORGING MATERIAL] => Array
                                (
                                    [line_name] => Outsource
                                    [pid] => 52
                                    [rid] => 613
                                    [level] => 1
                                    [item_id] => 227
                                    [subpart_id] => 227
                                    [subpart_name] => 
                                    [selected_capacity] => 500
                                    [capacity] => 500
                                    [capacity_ot2] => 2915
                                    [capacity_ot4] => 3239
                                    [dates] => Array
                                        (
                                            [2015-12-01] => 500
                                            [2015-11-30] => 500
                                            [2015-11-27] => 500
                                            [2015-11-26] => 500
                                            [2015-11-25] => 500
                                        )

                                )

                        )

                    [dates] => Array
                        (
                            [0] => Array
                                (
                                    [delivery_date] => 2015-12-18
                                    [qty] => 1000
                                )

                            [1] => Array
                                (
                                    [delivery_date] => 2015-12-21
                                    [qty] => 200
                                )

                        )

                )

            [1] => Array
                (
                    [item] => Gear 2 (1PA-1111-00)
                    [item_number] => 1PA-1111-00
                    [item_id] => 227
                    [routes] => Array
                        (
                            [227-DELIVERY] => Array
                                (
                                    [line_name] => Distribution
                                    [pid] => 48
                                    [rid] => 605
                                    [level] => 1
                                    [item_id] => 227
                                    [subpart_id] => 227
                                    [subpart_name] => + 1PA-E5514-00
                                    [selected_capacity] => 1500
                                    [capacity] => 1500
                                    [capacity_ot2] => 0
                                    [capacity_ot4] => 0
                                    [dates] => Array
                                        (
                                            [2015-12-16] => 1200
                                        )

                                )

                            [227-Inspection] => Array
                                (
                                    [line_name] => QC
                                    [pid] => 35
                                    [rid] => 606
                                    [level] => 1
                                    [item_id] => 227
                                    [subpart_id] => 227
                                    [subpart_name] => 
                                    [selected_capacity] => 1500
                                    [capacity] => 1500
                                    [capacity_ot2] => 0
                                    [capacity_ot4] => 0
                                    [dates] => Array
                                        (
                                            [2015-12-15] => 1200
                                        )

                                )

                            [227-N/C Finishing ] => Array
                                (
                                    [line_name] => Line 33
                                    [pid] => 29
                                    [rid] => 607
                                    [level] => 1
                                    [item_id] => 227
                                    [subpart_id] => 227
                                    [subpart_name] => 
                                    [selected_capacity] => 2793
                                    [capacity] => 2793
                                    [capacity_ot2] => 3142
                                    [capacity_ot4] => 3491
                                    [dates] => Array
                                        (
                                            [2015-12-14] => 1200
                                        )

                                )

                            [227-Heat Treatment] => Array
                                (
                                    [line_name] => Line 32
                                    [pid] => 26
                                    [rid] => 608
                                    [level] => 1
                                    [item_id] => 227
                                    [subpart_id] => 227
                                    [subpart_name] => 
                                    [selected_capacity] => 1024
                                    [capacity] => 1024
                                    [capacity_ot2] => 0
                                    [capacity_ot4] => 0
                                    [dates] => Array
                                        (
                                            [2015-12-11] => 1024
                                            [2015-12-10] => 1024
                                        )

                                )

                            [227-Hobbing] => Array
                                (
                                    [line_name] => Line 12
                                    [pid] => 5
                                    [rid] => 609
                                    [level] => 1
                                    [item_id] => 227
                                    [subpart_id] => 227
                                    [subpart_name] => 
                                    [selected_capacity] => 4352
                                    [capacity] => 4352
                                    [capacity_ot2] => 4896
                                    [capacity_ot4] => 5440
                                    [dates] => Array
                                        (
                                            [2015-12-09] => 2048
                                        )

                                )

                            [227-Shaper] => Array
                                (
                                    [line_name] => Line 12
                                    [pid] => 9
                                    [rid] => 610
                                    [level] => 1
                                    [item_id] => 227
                                    [subpart_id] => 227
                                    [subpart_name] => 
                                    [selected_capacity] => 2591
                                    [capacity] => 2591
                                    [capacity_ot2] => 2915
                                    [capacity_ot4] => 3239
                                    [dates] => Array
                                        (
                                            [2015-12-08] => 2048
                                        )

                                )

                            [227-Incoming] => Array
                                (
                                    [line_name] => QC
                                    [pid] => 38
                                    [rid] => 611
                                    [level] => 1
                                    [item_id] => 227
                                    [subpart_id] => 227
                                    [subpart_name] => 
                                    [selected_capacity] => 500
                                    [capacity] => 500
                                    [capacity_ot2] => 562
                                    [capacity_ot4] => 624
                                    [dates] => Array
                                        (
                                            [2015-12-04] => 500
                                            [2015-12-03] => 500
                                            [2015-12-02] => 500
                                            [2015-12-01] => 500
                                            [2015-11-30] => 500
                                        )

                                )

                            [227-LATHE MATERIAL] => Array
                                (
                                    [line_name] => Outsource
                                    [pid] => 50
                                    [rid] => 612
                                    [level] => 1
                                    [item_id] => 227
                                    [subpart_id] => 227
                                    [subpart_name] => 
                                    [selected_capacity] => 500
                                    [capacity] => 500
                                    [capacity_ot2] => 2915
                                    [capacity_ot4] => 3239
                                    [dates] => Array
                                        (
                                            [2015-12-04] => 500
                                            [2015-12-03] => 500
                                            [2015-12-02] => 500
                                            [2015-12-01] => 500
                                            [2015-11-30] => 500
                                        )

                                )

                            [227-FORGING MATERIAL] => Array
                                (
                                    [line_name] => Outsource
                                    [pid] => 52
                                    [rid] => 613
                                    [level] => 1
                                    [item_id] => 227
                                    [subpart_id] => 227
                                    [subpart_name] => 
                                    [selected_capacity] => 500
                                    [capacity] => 500
                                    [capacity_ot2] => 2915
                                    [capacity_ot4] => 3239
                                    [dates] => Array
                                        (
                                            [2015-12-04] => 500
                                            [2015-12-03] => 500
                                            [2015-12-02] => 500
                                            [2015-12-01] => 500
                                            [2015-11-30] => 500
                                        )

                                )

                        )

                    [dates] => Array
                        (
                            [0] => Array
                                (
                                    [delivery_date] => 2015-12-18
                                    [qty] => 1000
                                )

                            [1] => Array
                                (
                                    [delivery_date] => 2015-12-21
                                    [qty] => 200
                                )

                        )

                )

        )

    [min_date] => 2015-11-25
    [max_date] => 2015-12-21
)

As you can see, both array element is identical except for the dates in $routes[ROUTE_NAME][dates], I want to merge that values into one, so that there is only one value, again except for the dates.

for example, output of a ROUTE_NAME (eq. 227-DELIVERY)

[227-DELIVERY] => Array
(
    [line_name] => Distribution
    [pid] => 48
    [rid] => 605
    [level] => 1
    [item_id] => 227
    [subpart_id] => 227
    [subpart_name] => + 1PA-E5514-00
    [selected_capacity] => 1500
    [capacity] => 1500
    [capacity_ot2] => 0
    [capacity_ot4] => 0
    [dates] => Array
        (
            [2015-12-15] => 1200
            [2015-12-16] => 1200
        )

)

is there any built in php function for this? I don't think array_merge_recursive could do this.

Dariel Pratama
  • 1,607
  • 3
  • 18
  • 49
  • you can try with something similar: http://stackoverflow.com/questions/6785355/convert-multidimensional-array-into-single-array – Scream Dec 07 '15 at 08:47

1 Answers1

0

array_merge_recursive can be cumbersome in this case, but simple array_merge combined with foreach will work. This will create new array $result with the merged data:

$result = array();
foreach($array['output'][0]['routes'] as $key => $route){
    $route['dates'] = array_merge($route['dates'], $array['output'][1]['routes'][$key]['dates']);
    $result[$key] = $route;
}

print_r($result);

and if you want to put everything into the same array, you can do it like this:

foreach($array['output'][0]['routes'] as $key => &$route){
    $route['dates'] = array_merge($route['dates'], $array['output'][1]['routes'][$key]['dates']);
}

print_r($array['output'][0]['routes']);

Note & in the foreach loop which basically tells to modify the existing array that we are looping through.

pavlovich
  • 1,935
  • 15
  • 20