Given two arrays:
<?php $test1 = array(array('a','b','c'), 'a', 'b'); $test2 = array(array('d','e'), 'c'); ?>
when using merge rewrite, you expect the result to be an array:
<?php $test3 = array(array('d','e'), 'c', 'b'); ?>
However, most functions will work with this array:
So here is the function for this:
<?php function array_merge_overwrite(array &$array1, array $array2 = NULL) { $flag = true; foreach (array_keys($array2) as $key) { if (isset($array2[$key]) && is_array($array2[$key])) { if (isset($array1[$key]) && is_array($array1[$key])) array_merge_overwrite($array1[$key], $array2[$key]); else $array1[$key] = $array2[$key]; $flag = false; } } if ($flag == true) $array1 = $array2; } ?>
source share