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"
]
1
  • 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. Commented Feb 18, 2017 at 7:24

2 Answers 2

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] => - 
)
Sign up to request clarification or add additional context in comments.

Comments

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.