Мне нужно, чтобы два массива слились в один, сохраняя все ключи на месте и перечисляя значения в массиве, как в этом примере:
$array1 = array('car' => '3', 'bus' => '2'); $array2 = array('dog' => '1', 'car' => '2', 'bird' => '9'); $merged = array( 'car' => array('3','2'), 'bus' => array('2',null), 'dog' => array(null,'1'), 'bird' => (null,'9') );
function merge_common_keys(){ $arr = func_get_args(); $num = func_num_args(); $keys = array(); $i = 0; for ($i=0; $i<$num; ++$i){ $keys = array_merge($keys, array_keys($arr[$i])); } $keys = array_unique($keys); $merged = array(); foreach ($keys as $key){ $merged[$key] = array(); for($i=0; $i<$num; ++$i){ $merged[$key][] = isset($arr[$i][$key]) ? $arr[$i][$key] : null; } } return $merged; }
Применение:
$merged = merge_common_keys($array1,$array2);
PS. Он может работать с более чем двумя массивами, просто передайте столько, сколько хотите, в качестве следующих аргументов.
Что-то вроде этого? http://php.net/array_merge_recursive