1

I have values like this multi-dimensional array structure, before for-each loop.

    Array
 (
   [1234] => Array
     (
       [0] => Array
         (
           [0] => a
           [1] => b
           [2] => c
           [3] => d
           [4] => e
           [5] => f
         )

       [1] => Array
         (
           [0] => g
           [1] => h
           [2] => i
           [3] => j
           [4] => k
           [5] => l
         )

     )

   [5678] => Array
     (
       [0] => Array
         (
           [0] => a
           [1] => b
           [2] => c
           [3] => d
           [4] => e
           [5] => f
         )

       [1] => Array
         (
           [0] => g
           [1] => h
           [2] => i
           [3] => j
           [4] => k
           [5] => l
           [6] => m
         )

     )

 )

EXPECTED Output If there is under the same key then merge values in for-each.

Array
     (
         [1234] => Array
             (
                 [0] => a
                 [1] => b
                 [2] => c
                 [3] => d
                 [4] => e
                 [5] => f
                 [6] => g
                 [7] => h
                 [8] => i
                 [9] => j
                 [10] => k
                 [11] => l
             )

     [5678] => Array
         (
             [0] => a
             [1] => b
             [2] => c
             [3] => d
             [4] => e
             [5] => f
             [6] => g
             [7] => h
             [8] => i
             [9] => j
             [10] => k
             [11] => l
             [12] => m
         )
 )

Please let me know if there's any array function or any possible solution.

Above one is multi-dimensional array and expected is 2-dimensional array

php Lerner
  • 11
  • 2

2 Answers2

2

You can do it with Splat Operator and array_merge:

$array = [
        1234 => [
                ['a','b','c','d','e','f'],
                ['g','h','i','j','k','l'],

            ],
        5678 => [
                ['a','b','c','d','e','f'],
                ['g','h','i','j','k','l','m'],

            ]
    ];
foreach($array as $key => $item){
    $array[$key] = array_merge(...$item);
}
var_dump($array);

Arrays and Traversable objects can be unpacked into argument lists when calling functions by using the ... operator.

RainDev
  • 1,098
  • 8
  • 9
1

Loop over each key's value one by one and do an array_merge for the current key by collecting all of them inside a single array.

<?php

foreach($data as $key => $value){
    $data[$key] = [];
    foreach($value as $subarray){
        $data[$key] = array_merge($data[$key],$subarray);// keep merging them in this original array
    }

}
print_r($data);
nice_dev
  • 17,053
  • 2
  • 21
  • 35