<?php
function custom_array_merge() {
// variable number of inputs
// consolidate into array of items => count/array(of counts) across inputs
$counts = array_map('array_count_values', $arrays);
// reduce array of counts (where applicable) to maximum count
}, $consolidated);
// build result -- could be faster with array_fill() and concatenating
// but that would definitely use up more memory
$result = [];
foreach ($maximums as $item => $times) {
for ($i = 0; $i < $times; ++$i) {
$result[] = $item;
}
}
return $result;
}
$result = custom_array_merge(
['room', 'page', 'room'],
['book', 'book','book','room'],
['page', 'room']
);
PD9waHAKCmZ1bmN0aW9uIGN1c3RvbV9hcnJheV9tZXJnZSgpIHsKICAgIC8vIHZhcmlhYmxlIG51bWJlciBvZiBpbnB1dHMKICAgICRhcnJheXMgPSBmdW5jX2dldF9hcmdzKCk7CgogICAgLy8gY29uc29saWRhdGUgaW50byBhcnJheSBvZiBpdGVtcyA9PiBjb3VudC9hcnJheShvZiBjb3VudHMpIGFjcm9zcyBpbnB1dHMKICAgICRjb3VudHMgPSBhcnJheV9tYXAoJ2FycmF5X2NvdW50X3ZhbHVlcycsICRhcnJheXMpOwogICAgJGNvbnNvbGlkYXRlZCA9IGNhbGxfdXNlcl9mdW5jX2FycmF5KCdhcnJheV9tZXJnZV9yZWN1cnNpdmUnLCAkY291bnRzKTsKCiAgICAvLyByZWR1Y2UgYXJyYXkgb2YgY291bnRzICh3aGVyZSBhcHBsaWNhYmxlKSB0byBtYXhpbXVtIGNvdW50CiAgICAkbWF4aW11bXMgPSBhcnJheV9tYXAoZnVuY3Rpb24oJHYpIHsgCiAgICAgICAgcmV0dXJuIGlzX2FycmF5KCR2KSA/IG1heCgkdikgOiAkdjsKICAgIH0sICRjb25zb2xpZGF0ZWQpOwoKICAgIC8vIGJ1aWxkIHJlc3VsdCAtLSBjb3VsZCBiZSBmYXN0ZXIgd2l0aCBhcnJheV9maWxsKCkgYW5kIGNvbmNhdGVuYXRpbmcgCiAgICAvLyBidXQgdGhhdCB3b3VsZCBkZWZpbml0ZWx5IHVzZSB1cCBtb3JlIG1lbW9yeSAKICAgICRyZXN1bHQgPSBbXTsKICAgIGZvcmVhY2ggKCRtYXhpbXVtcyBhcyAkaXRlbSA9PiAkdGltZXMpIHsKICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkdGltZXM7ICsrJGkpIHsKICAgICAgICAgICAgJHJlc3VsdFtdID0gJGl0ZW07CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkcmVzdWx0Owp9CgokcmVzdWx0ID0gY3VzdG9tX2FycmF5X21lcmdlKAoJWydyb29tJywgJ3BhZ2UnLCAncm9vbSddLCAKCVsnYm9vaycsICdib29rJywnYm9vaycsJ3Jvb20nXSwKCVsncGFnZScsICdyb29tJ10KKTsKCnByaW50X3IoJHJlc3VsdCk7