2015-12-07 38 views
3

如果標題不夠清楚,我很抱歉。我有以下調試陣列:合併單個數組中的多維數組

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 
) 

正如你所看到的,數組元素是除了在$routes[ROUTE_NAME][dates]日期相同,我想合併一個值到一個,所以只存在一個值,再除爲日期。

例如ROUTE_NAME的輸出(當量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 
     ) 

) 

是有在PHP功能的任何內置此?我不認爲array_merge_recursive可以做到這一點。

+0

你可以嘗試類似的東西:http://stackoverflow.com/questions/6785355/convert-multidimensional-array-into-single-array – Scream

回答

0

array_merge_recursive在這種情況下可能很麻煩,但簡單array_merge加上foreach將工作。這將創造新的數組$result與合併數據:

$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); 

,如果你想要把什麼東西都往同一陣列中,你可以做這樣的:在foreach循環

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']); 

&這基本上告訴修改我們正在循環的現有數組。