_wp_array_get( array $input_array, array $path, mixed $default_value = null ): mixed

This function’s access is marked private. This means it is not intended for use by plugin or theme developers, only in other core functions. It is listed here for completeness.

Accesses an array in depth based on a path of keys.

Description

It is the PHP equivalent of JavaScript’s lodash.get() and mirroring it may help other components retain some symmetry between client and server implementations.

Example usage:

$input_array = array(
    'a' => array(
        'b' => array(
            'c' => 1,
        ),
    ),
);
_wp_array_get( $input_array, array( 'a', 'b', 'c' ) );

Parameters

$input_arrayarrayrequired
An array from which we want to retrieve some information.
$patharrayrequired
An array of keys describing the path with which to retrieve information.
$default_valuemixedoptional
The return value if the path does not exist within the array, or if $input_array or $path are not arrays.

Default:null

Return

mixed The value from the path specified.

Source

function _wp_array_get( $input_array, $path, $default_value = null ) {
	// Confirm $path is valid.
	if ( ! is_array( $path ) || 0 === count( $path ) ) {
		return $default_value;
	}

	foreach ( $path as $path_element ) {
		if ( ! is_array( $input_array ) ) {
			return $default_value;
		}

		if ( is_string( $path_element )
			|| is_integer( $path_element )
			|| null === $path_element
		) {
			/*
			 * Check if the path element exists in the input array.
			 * We check with `isset()` first, as it is a lot faster
			 * than `array_key_exists()`.
			 */
			if ( isset( $input_array[ $path_element ] ) ) {
				$input_array = $input_array[ $path_element ];
				continue;
			}

			/*
			 * If `isset()` returns false, we check with `array_key_exists()`,
			 * which also checks for `null` values.
			 */
			if ( array_key_exists( $path_element, $input_array ) ) {
				$input_array = $input_array[ $path_element ];
				continue;
			}
		}

		return $default_value;
	}

	return $input_array;
}

Changelog

VersionDescription
5.6.0Introduced.

User Contributed Notes

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