1

I am trying to merge 5 associative arrays which having different keys. This is the result after using array merge on 5 arrays

array_merge($bucketExlData1, $bucketExlData2, $bucketExlData3, $bucketExlData4, $bucketExlData5)

result

array:5 [▼
  0 => array:1 [▼
    "Name" => "John Test"
  ]
  1 => array:1 [▼
    "Archived-On" => "2016-05-02 18:20:26"
  ]
  2 => array:8 [▼
    "Phone" => "2132918968"
    "DOB" => "1800-01-01 00:00:00"
    "Referred-By-Practice" => "-"
    "Referred-By-Provider" => "-"
    "Last-Scheduled-To-Practice" => "-"
    "Last-Scheduled-To-Provider" => "-"
    "Last-Scheduled-To-Location" => "-"
    "Last-Scheduled-Date-of-Service" => "-"
  ]
  3 => array:1 [▼
    "Archived-Reason" => "no-need-to-schedule"
  ]
  4 => array:1 [▼
    "Notes" => "done"
  ]
]

I want to make this array like

array:5 [▼   
    "Name" => "John Test"
    "Archived-On" => "2016-05-02 18:20:26"
    "Phone" => "2132918968"
    "DOB" => "1800-01-01 00:00:00"
    "Referred-By-Practice" => "-"
    "Referred-By-Provider" => "-"
    "Last-Scheduled-To-Practice" => "-"
    "Last-Scheduled-To-Provider" => "-"
    "Last-Scheduled-To-Location" => "-"
    "Last-Scheduled-Date-of-Service" => "-"
    "Archived-Reason" => "no-need-to-schedule"
    "Notes" => "done"
]
Abdulla Nilam
  • 36,589
  • 17
  • 64
  • 85
  • Without seeing your original arrays it's difficult to know for sure. But it seems that your arrays that you're merging are multi-dimensional arrays which is why it's not working as expected. – Jonathan Feb 18 '17 at 07:24

2 Answers2

2

I'll assume your array is like this

$arrayName = array(
    '0' => array("Name" => "John Test"),
    '1' => array("Archived-On" => "2016-05-02 18:20:26"),
    '2' => array(
           "Phone" => "2132918968",
        "DOB" => "1800-01-01 00:00:00",
        "Referred-By-Practice" => "-",
        "Referred-By-Provider" => "-",
        "Last-Scheduled-To-Practice" => "-",
        "Last-Scheduled-To-Provider" => "-",
        "Last-Scheduled-To-Location" => "-",
        "Last-Scheduled-Date-of-Service" => "-"
        )
    );

Then try array_reduce

$result = array_reduce($arrayName, 'array_merge', array());

Output

Array ( 
    [Name] => John Test 
    [Archived-On] => 2016-05-02 18:20:26
    [Phone] => 2132918968 
    [DOB] => 1800-01-01 00:00:00 
    [Referred-By-Practice] => - 
    [Referred-By-Provider] => - 
    [Last-Scheduled-To-Practice] => - 
    [Last-Scheduled-To-Provider] => - 
    [Last-Scheduled-To-Location] => - 
    [Last-Scheduled-Date-of-Service] => - 
)
Abdulla Nilam
  • 36,589
  • 17
  • 64
  • 85
1

Try again with

array_merge_recursive($bucketExlData1, [
    $bucketExlData2, 
    $bucketExlData3, 
    $bucketExlData4, 
    $bucketExlData5
]);

Or

array_merge_recursive(
    $bucketExlData1,
    $bucketExlData2, 
    $bucketExlData3, 
    $bucketExlData4, 
    $bucketExlData5
);

Function definition here: array_merge_recursive

Abdulla Nilam
  • 36,589
  • 17
  • 64
  • 85
EddyTheDove
  • 12,979
  • 2
  • 37
  • 45