Alert: 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.

_wp_array_set( array $array, array $path, mixed $value = null )

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


Description Description

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:

$array = array();
_wp_array_set( $array, array( 'a', 'b', 'c', 1 ) );

$array becomes:
array(
    'a' => array(
        'b' => array(
            'c' => 1,
        ),
    ),
);

Top ↑

Parameters Parameters

$array

(array) (Required) An array that we want to mutate to include a specific value in a path.

$path

(array) (Required) An array of keys describing the path that we want to mutate.

$value

(mixed) (Optional) The value that will be set.

Default value: null


Top ↑

Source Source

File: wp-includes/functions.php

function _wp_array_set( &$array, $path, $value = null ) {
	// Confirm $array is valid.
	if ( ! is_array( $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, $array ) ||
			! is_array( $array[ $path_element ] )
		) {
			$array[ $path_element ] = array();
		}
		$array = &$array[ $path_element ]; // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.VariableRedeclaration
	}

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


Top ↑

Changelog Changelog

Changelog
Version Description
5.8.0 Introduced.

Top ↑

User Contributed Notes User Contributed Notes

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