Eine auf WordPress spezialiserte Suchmaschine für Entwickler und Theme-Autoren



array_replace_recursive ›

Seit4.5.3
Veraltetn/v
array_replace_recursive ( $base = array(), $replacements = array() )
Parameter: (2)
  • (array) $base Array with keys needing to be replaced.
    Erforderlich: Nein
    Standard: array()
  • (array) $replacements Array with the replaced keys.
    Erforderlich: Nein
    Standard: array()
Siehe:
Gibt zurück:
  • (array)
Definiert in:
Codex:

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

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.



Quellcode

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;
	}
endif;

/**
 * Polyfill for the SPL autoloader. In PHP 5.2 (but not 5.3 and later), SPL can
 * be disabled, and PHP 7.2 raises notices if the compiler finds an __autoload()
 * function declaration. Function availability is checked here, and the
 * autoloader is included only if necessary.
 */
if ( ! function_exists( 'spl_autoload_register' ) ) {
	require_once ABSPATH . WPINC . '/spl-autoload-compat.php';
}