_wp_array_get()WP 5.6.0

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

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' ) );

Internal function — this function is designed to be used by the kernel itself. It is not recommended to use this function in your code.

No Hooks.

Return

Mixed. The value from the path specified.

Usage

_wp_array_get( $input_array, $path, $default_value );
$input_array(array) (required)
An array from which we want to retrieve some information.
$path(array) (required)
An array of keys describing the path with which to retrieve information.
$default_value(mixed)
The return value if the path does not exist within the array, or if $input_array or $path are not arrays.
Default: null

Changelog

Since 5.6.0 Introduced.

_wp_array_get() code WP 6.5.4

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