Return to Snippet

Revision: 32467
at November 25, 2010 00:26 by mattlowden


Updated Code
function array_merge_replace(array $base_array, array $merge_array){

	$new_array = array();

	$key_list = array_unique( array_merge( array_keys( $base_array ), array_keys( $merge_array) ) );

	foreach($key_list as $k)
	{

		if( !array_key_exists($k, $base_array) && array_key_exists($k, $merge_array) )
		{
			$new_array[$k] = $merge_array[$k];
		}
		elseif( array_key_exists($k, $base_array) && !array_key_exists($k, $merge_array) )
		{
			$new_array[$k] = $base_array[$k];
		}
		elseif( array_key_exists($k, $base_array) && array_key_exists($k, $merge_array) )
		{
			if( is_array($base_array[$k]) && is_array($merge_array[$k]) )
			{
				$new_array[$k] = array_merge_replace($base_array[$k], $merge_array[$k]);
			}
			else
			{
				$new_array[$k] = $merge_array[$k];
			}
		}

	}
	
	return $new_array;

}

Revision: 32466
at October 2, 2010 08:13 by mattlowden


Updated Code
function array_merge_replace(array $base_array, array $merge_array){

	$new_array = array();

	$key_list = array_unique( array_merge( array_keys( $base_array ), array_keys( $merge_array) ) );

	foreach($key_list as $k){

		if( !array_key_exists($k, $base_array) && array_key_exists($k, $merge_array) ){
			$new_array[$k] = $merge_array[$k];
		}elseif( array_key_exists($k, $base_array) && !array_key_exists($k, $merge_array) ){
			$new_array[$k] = $base_array[$k];
		}elseif( array_key_exists($k, $base_array) && array_key_exists($k, $merge_array) ){
			if( is_array($base_array[$k]) && is_array($merge_array[$k]) ){
				$new_array[$k] = array_merge_replace($base_array[$k], $merge_array[$k]);
			}else{
				$new_array[$k] = $merge_array[$k];
			}
		}

	}
	
	return $new_array;

}

Revision: 32465
at September 30, 2010 09:37 by mattlowden


Updated Code
function array_merge_replace(array $base_array, array $merge_array){

	$new_array = array();

	$key_list = array_unique( array_merge( array_keys( $base_array ), array_keys( $merge_array) ) );

	foreach($key_list as $k){

		if( empty($base_array[$k]) && !empty($merge_array[$k]) ){
			$new_array[$k] = $merge_array[$k];
		}elseif( !empty($base_array[$k]) && empty($merge_array[$k]) ){
			$new_array[$k] = $base_array[$k];
		}elseif( !empty($base_array[$k]) && !empty($merge_array[$k]) ){
			if( is_array($base_array[$k]) && is_array($merge_array[$k]) ){
				$new_array[$k] = array_merge_replace($base_array[$k], $merge_array[$k]);
			}else{
				$new_array[$k] = $merge_array[$k];
			}
		}

	}
	
	return $new_array;

}

Revision: 32464
at September 25, 2010 19:29 by mattlowden


Initial Code
function array_merge_replace(array $base_array, array $merge_array){
	$new_array = array();
	$key_list = array_merge((array)$base_array, (array)$merge_array);
	foreach($key_list as $k=>$v){
		if((array_key_exists($k, $base_array) && is_array($base_array[$k])) || (array_key_exists($k, $merge_array) && is_array($merge_array[$k]))){
			$new_array[$k] = array_merge_replace((array) $base_array[$k], (array) $merge_array[$k]);
		}else{
			$new_array[$k] = array_key_exists($k, $merge_array) ? $merge_array[$k] : $base_array[$k];
		}
	}
	return $new_array;
}

Initial URL
http://www.mattlowden.com/blog/2010/02/deep-merging-two-arrays-in-php/

Initial Description
Function for deep merging multiple arrays

Initial Title
array_merge_replace

Initial Tags

                                

Initial Language
PHP