2013-09-03 4 views
0

В настоящее время у меня есть два массива, которые выглядят так, что я пытался сгруппировать/объединить, но не повезло.Слияние/группирование многомерных массивов

$array1;

Array 
(
    [1] => Array 
     (
      [options] => 1 
      [barcode] => 
      [supplier] => 10 
      [topcat] => Fibre,1 
      [cat] => Acrylic,1 
      [range] => Clearance Chenille,14 
      [colour] => 
      [type] => Ball 
      [option] => Array 
       (
        [1] => Array 
         (
          [type] => Ball 
          [barcode] => 
          [length] => 
          [wpi] => 
          [dyeable] => 
          [feltable] => 
          [sold_weight] => 
          [gauge] => 
          [price] => 
          [pack_qty] => 
          [shipping_weight] => 
          [cost_price] => 
         ) 

       ) 

     ) 

    [2] => Array 
     (
      [options] => 1 
      [barcode] => 
      [supplier] => 10 
      [topcat] => Fibre,1 
      [cat] => Acrylic,1 
      [range] => Clearance Chenille,14 
      [colour] => 
      [type] => Ball 
      [option] => Array 
       (
        [1] => Array 
         (
          [type] => Ball 
          [barcode] => 
          [length] => 
          [wpi] => 
          [dyeable] => 
          [feltable] => 
          [sold_weight] => 
          [gauge] => 
          [price] => 
          [pack_qty] => 
          [shipping_weight] => 
          [cost_price] => 
         ) 

        [2] => Array 
         (
          [type] => Ball 
          [barcode] => 
          [length] => 
          [wpi] => 
          [dyeable] => 
          [feltable] => 
          [sold_weight] => 
          [gauge] => 
          [price] => 
          [pack_qty] => 
          [shipping_weight] => 
          [cost_price] => 
         ) 

       ) 

     ) 

) 

$array2;

Array 
(
    [1] => Array 
     (
      [1] => Array 
       (
        [0] => Array 
         (
          [name] => 500aqua.jpg 
          [type] => image/jpeg 
          [tmp_name] => C:\xampp\tmp\php6C70.tmp 
          [error] => 0 
          [size] => 133659 
         ) 

       ) 

     ) 

    [2] => Array 
     (
      [1] => Array 
       (
        [0] => Array 
         (
          [name] => 500beige.jpg 
          [type] => image/jpeg 
          [tmp_name] => C:\xampp\tmp\php6C71.tmp 
          [error] => 0 
          [size] => 148940 
         ) 

        [1] => Array 
         (
          [name] => 500beige-zoom.jpg 
          [type] => image/jpeg 
          [tmp_name] => C:\xampp\tmp\php6C72.tmp 
          [error] => 0 
          [size] => 211420 
         ) 

       ) 

      [2] => Array 
       (
        [0] => Array 
         (
          [name] => 500beige.jpg 
          [type] => image/jpeg 
          [tmp_name] => C:\xampp\tmp\php6C83.tmp 
          [error] => 0 
          [size] => 148940 
         ) 

        [1] => Array 
         (
          [name] => 500beige-zoom.jpg 
          [type] => image/jpeg 
          [tmp_name] => C:\xampp\tmp\php6C84.tmp 
          [error] => 0 
          [size] => 211420 
         ) 

       ) 

     ) 

) 

Я пытался объединить их так:

Array 
(
    [1] => Array 
     (
      [options] => 1 
      [barcode] => 
      [supplier] => 10 
      [topcat] => Fibre,1 
      [cat] => Acrylic,1 
      [range] => Clearance Chenille,14 
      [colour] => 
      [type] => Ball 
      [option] => Array 
       (
        [1] => Array 
         (
          [type] => Ball 
          [barcode] => 
          [length] => 
          [wpi] => 
          [dyeable] => 
          [feltable] => 
          [sold_weight] => 
          [gauge] => 
          [price] => 
          [pack_qty] => 
          [shipping_weight] => 
          [cost_price] => 
          [files] => Array 
           (
            [0] => Array 
             (
              [name] => 500aqua.jpg 
              [type] => image/jpeg 
              [tmp_name] => C:\xampp\tmp\php6C70.tmp 
              [error] => 0 
              [size] => 133659 
             ) 
           ) 
         ) 
       ) 
     ) 
    [2] => Array 
     (
      [options] => 1 
      [barcode] => 
      [supplier] => 10 
      [topcat] => Fibre,1 
      [cat] => Acrylic,1 
      [range] => Clearance Chenille,14 
      [colour] => 
      [type] => Ball 
      [option] => Array 
       (
        [1] => Array 
         (
          [type] => Ball 
          [barcode] => 
          [length] => 
          [wpi] => 
          [dyeable] => 
          [feltable] => 
          [sold_weight] => 
          [gauge] => 
          [price] => 
          [pack_qty] => 
          [shipping_weight] => 
          [cost_price] => 
          [files] => Array 
           (
            [0] => Array 
             (
              [name] => 500beige.jpg 
              [type] => image/jpeg 
              [tmp_name] => C:\xampp\tmp\php6C71.tmp 
              [error] => 0 
              [size] => 148940 
             ) 
            [1] => Array 
             (
              [name] => 500beige-zoom.jpg 
              [type] => image/jpeg 
              [tmp_name] => C:\xampp\tmp\php6C72.tmp 
              [error] => 0 
              [size] => 211420 
             ) 
           ) 
         ) 
        [2] => Array 
         (
          [type] => Ball 
          [barcode] => 
          [length] => 
          [wpi] => 
          [dyeable] => 
          [feltable] => 
          [sold_weight] => 
          [gauge] => 
          [price] => 
          [pack_qty] => 
          [shipping_weight] => 
          [cost_price] => 
          [files] => Array 
           (
            [0] => Array 
             (
              [name] => 500beige.jpg 
              [type] => image/jpeg 
              [tmp_name] => C:\xampp\tmp\php6C83.tmp 
              [error] => 0 
              [size] => 148940 
             ) 
            [1] => Array 
             (
              [name] => 500beige-zoom.jpg 
              [type] => image/jpeg 
              [tmp_name] => C:\xampp\tmp\php6C84.tmp 
              [error] => 0 
              [size] => 211420 
             ) 
           ) 
         ) 
       ) 
     ) 
) 

В настоящее время получаю:

Array 
(
    [0] => Array 
     (
      [0] => Array 
       (
        [type] => Ball 
        [barcode] => 
        [length] => 
        [wpi] => 
        [dyeable] => 
        [feltable] => 
        [sold_weight] => 
        [gauge] => 
        [price] => 
        [pack_qty] => 
        [shipping_weight] => 
        [cost_price] => 
       ) 

      [files] => Array 
       (
        [1] => Array 
         (
          [0] => Array 
           (
            [name] => 500aqua.jpg 
            [type] => image/jpeg 
            [tmp_name] => C:\xampp\tmp\php1534.tmp 
            [error] => 0 
            [size] => 133659 
           ) 

         ) 

       ) 

     ) 

    [1] => Array 
     (
      [0] => Array 
       (
        [type] => Ball 
        [barcode] => 
        [length] => 
        [wpi] => 
        [dyeable] => 
        [feltable] => 
        [sold_weight] => 
        [gauge] => 
        [price] => 
        [pack_qty] => 
        [shipping_weight] => 
        [cost_price] => 
       ) 

      [1] => Array 
       (
        [type] => Ball 
        [barcode] => 
        [length] => 
        [wpi] => 
        [dyeable] => 
        [feltable] => 
        [sold_weight] => 
        [gauge] => 
        [price] => 
        [pack_qty] => 
        [shipping_weight] => 
        [cost_price] => 
       ) 

      [files] => Array 
       (
        [1] => Array 
         (
          [0] => Array 
           (
            [name] => 500beige.jpg 
            [type] => image/jpeg 
            [tmp_name] => C:\xampp\tmp\php1535.tmp 
            [error] => 0 
            [size] => 148940 
           ) 

          [1] => Array 
           (
            [name] => 500beige-zoom.jpg 
            [type] => image/jpeg 
            [tmp_name] => C:\xampp\tmp\php1545.tmp 
            [error] => 0 
            [size] => 211420 
           ) 

         ) 

        [2] => Array 
         (
          [0] => Array 
           (
            [name] => 500beige.jpg 
            [type] => image/jpeg 
            [tmp_name] => C:\xampp\tmp\php1546.tmp 
            [error] => 0 
            [size] => 148940 
           ) 

          [1] => Array 
           (
            [name] => 500beige-zoom.jpg 
            [type] => image/jpeg 
            [tmp_name] => C:\xampp\tmp\php1547.tmp 
            [error] => 0 
            [size] => 211420 
           ) 

         ) 

       ) 

     ) 

) 

То, что я пытался до сих пор:

$group = array(); 
foreach($array1 as $key1 => $val1){ 
    $group[] = array_merge($val1, array("files" => $array2[$key1])); 
} 
+0

См. Http://stackoverflow.com/questions/8381439/php-combine-two-multi-dimensional-arrays –

+0

Можете ли вы опубликовать более простой пример ввода/вывода, который показывает, почему array_merge ($ array1, $ array2) будет не работа? –

+0

Да, обновил OP, чтобы показать, что у меня есть. –

ответ

1

Я еще не проверял (я, возможно, некоторое время в час), но я думаю, что это может помочь:

foreach($array1 as $key => $val){ 
    foreach($val['option'] as $k_inner => $v_inner){ 
     $array1[$key]['option'][$k_inner]['files'] = $array2[$key][$k_inner]; 
    } 
} 

У вас будет массив2, являющийся вашим массивом $group. Как только я проверю это, я отредактирую это.

EDIT: Исправлен алгоритм. Ошибка заключалась в том, что я перепутал $ array1 и $ array2 и что я не рассматривал правильную глубину и ключи.

+0

Не работает пока. Я обновляю в OP то, что у меня есть. –

+0

Не могли бы вы отправить мне массивы, чтобы я мог провести тестирование? sikian @ gmail. com – Sikian

+1

Массивы создаются с использованием параметров POST. Вы можете преобразовать массивы 'print_r', используя http://phpoverflow.eu01.aws.af.cm/print_r/ http://codepad.org/EmdBkpum –

Смежные вопросы