wpseek.com
A WordPress-centric search engine for devs and theme authors



_wp_array_get › WordPress Function

Since5.6.0
Deprecatedn/a
_wp_array_get ( $input_array, $path, $default_value = null )
Access:
  • private
Parameters: (3)
  • (array) $input_array An array from which we want to retrieve some information.
    Required: Yes
  • (array) $path An array of keys describing the path with which to retrieve information.
    Required: Yes
  • (mixed) $default_value Optional. The return value if the path does not exist within the array, or if `$input_array` or `$path` are not arrays. Default null.
    Required: No
    Default: null
Returns:
  • (mixed) The value from the path specified.
Defined at:
Codex:

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


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