0

I've got two arrays. columns and tableInfo. I want to merge them together, but when I try to do that with array_merge I get these results when I var_dump it:

array (size=67)
  0 => string 'receive_date' (length=12)
  1 => string 'day' (length=3)
  2 => string 'main_category' (length=13)
  3 => string 'brand' (length=5)
  4 => string 'first_to_receive_qty' (length=20)
  5 => string 'purchase_value' (length=14)
  6 => 
    array (size=6)
      0 => string '2021-11-09' (length=10)
      1 => string 'Tuesday' (length=7)
      2 => string 'apparel' (length=7)
      3 => string 'adidas' (length=6)
      4 => string '3184' (length=4)
      5 => string '34773.31' (length=8)
  7 => 
    array (size=6)
      0 => string '2021-11-09' (length=10)
      1 => string 'Tuesday' (length=7)
      2 => string 'apparel' (length=7)
      3 => string 'nike' (length=4)
      4 => string '642' (length=3)
      5 => string '5089.50' (length=7)
  8 => 
    array (size=6)
      0 => string '2021-11-09' (length=10)
      1 => string 'Tuesday' (length=7)
      2 => string 'apparel' (length=7)
      3 => string 'puma' (length=4)
      4 => string '15' (length=2)
      5 => string '120.00' (length=6)

but i want the array var_dump to look like:

array (size=726)
0 =>
  array (size=6)
    'receive_date' => string '2021-11-09' (length=10)
    'day' => string 'tuesday' (length=7)
    'main_category' => string 'apparel' (length=7)
    'brand' => string 'adidas' (length=6)
    'first_to_receive_qty' => string '3184' (length=4)
    'purchase_value' => string '34773.31' (length=8) 
1 =>
  array (size=6)
    'receive_date' => string '2021-11-09' (length=10)
    'day' => string 'tuesday' (length=7)
    'main_category' => string 'apparel' (length=7)
    'brand' => string 'nike' (length=4)
    'first_to_receive_qty' => string '642' (length=3)
    'purchase_value' => string '5089.50' (length=7)
2 =>
  array (size=6)
    'receive_date' => string '2021-11-09' (length=10)
    'day' => string 'tuesday' (length=7)
    'main_category' => string 'apparel' (length=7)
    'brand' => string 'puma' (length=4)
    'first_to_receive_qty' => string '15' (length=2)
    'purchase_value' => string '120.00' (length=6)
 

I've tried a couple of things but i just can't seem to figure out how I merge them into an array that looks like this. Can somebody tell me how I gotta do it?

  • 1
    Does this answer your question? [PHP: Merge 2 Multidimensional Arrays](https://stackoverflow.com/questions/1558291/php-merge-2-multidimensional-arrays) – Koen Hollander Nov 09 '21 at 15:19

1 Answers1

0

You want to combine not merge. To get a new array:

$result = array_map(function($v) use($columns) {
                        return array_combine($columns, $v);
                    }, $tableinfo);

Or simply loop and combine:

foreach($tableinfo as $row) {
    $result[] = array_combine($columns, $row);
}

Or to modify $tableinfo:

array_walk(function(&$v) use($columns) {
               $v = array_combine($columns, $v);
           }, $tableinfo);

Or with the loop:

foreach($tableinfo as &$row) {
    $row = array_combine($columns, $row);
}
AbraCadaver
  • 78,200
  • 7
  • 66
  • 87