array_replace_recursive( array $base = array(), array $replacements = array() )

PHP-agnostic version of {@link array_replace_recursive()}.


Description Description

The array_replace_recursive() function is a PHP 5.3 function. WordPress currently supports down to PHP 5.2, so this method is a workaround for PHP 5.2.

Note: array_replace_recursive() supports infinite arguments, but for our use- case, we only need to support two arguments.

Subject to removal once WordPress makes PHP 5.3.0 the minimum requirement.

See also See also


Top ↑

Parameters Parameters

$base

(array) (Optional) Array with keys needing to be replaced.

Default value: array()

$replacements

(array) (Optional) Array with the replaced keys.

Default value: array()


Top ↑

Return Return

(array)


Top ↑

Source Source

File: wp-includes/compat.php

	function array_replace_recursive( $base = array(), $replacements = array() ) {
		foreach ( array_slice( func_get_args(), 1 ) as $replacements ) {
			$bref_stack = array( &$base );
			$head_stack = array( $replacements );

			do {
				end( $bref_stack );

				$bref = &$bref_stack[ key( $bref_stack ) ];
				$head = array_pop( $head_stack );

				unset( $bref_stack[ key( $bref_stack ) ] );

				foreach ( array_keys( $head ) as $key ) {
					if ( isset( $key, $bref ) &&
						isset( $bref[ $key ] ) && is_array( $bref[ $key ] ) &&
						isset( $head[ $key ] ) && is_array( $head[ $key ] ) ) {

						$bref_stack[] = &$bref[ $key ];
						$head_stack[] = $head[ $key ];
					} else {
						$bref[ $key ] = $head[ $key ];
					}
				}
			} while ( count( $head_stack ) );
		}

		return $base;
	}

Top ↑

Changelog Changelog

Changelog
Version Description
4.5.3 Introduced.

Top ↑

User Contributed Notes User Contributed Notes

You must log in before being able to contribute a note or feedback.