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



_wp_array_set › WordPress Function

Since5.8.0
Deprecatedn/a
_wp_array_set ( $input_array, $path, $value = null )
Access:
  • private
Parameters: (3)
  • (array) $input_array An array that we want to mutate to include a specific value in a path.
    Required: Yes
  • (array) $path An array of keys describing the path that we want to mutate.
    Required: Yes
  • (mixed) $value The value that will be set.
    Required: No
    Default: null
Defined at:
Codex:

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

It is the PHP equivalent of JavaScript's lodash.set() and mirroring it may help other components retain some symmetry between client and server implementations. Example usage: $input_array = array(); _wp_array_set( $input_array, array( 'a', 'b', 'c', 1 ) ); $input_array becomes: array( 'a' => array( 'b' => array( 'c' => 1, ), ), );


Source

function _wp_array_set( &$input_array, $path, $value = null ) {
	// Confirm $input_array is valid.
	if ( ! is_array( $input_array ) ) {
		return;
	}

	// Confirm $path is valid.
	if ( ! is_array( $path ) ) {
		return;
	}

	$path_length = count( $path );

	if ( 0 === $path_length ) {
		return;
	}

	foreach ( $path as $path_element ) {
		if (
			! is_string( $path_element ) && ! is_integer( $path_element ) &&
			! is_null( $path_element )
		) {
			return;
		}
	}

	for ( $i = 0; $i < $path_length - 1; ++$i ) {
		$path_element = $path[ $i ];
		if (
			! array_key_exists( $path_element, $input_array ) ||
			! is_array( $input_array[ $path_element ] )
		) {
			$input_array[ $path_element ] = array();
		}
		$input_array = &$input_array[ $path_element ];
	}

	$input_array[ $path[ $i ] ] = $value;
}