Opened 2 years ago
Last modified 2 years ago
#59330 new enhancement
Improvement in wp_parse_args for mutli-dimensional arrays
| Reported by: |
|
Owned by: | |
|---|---|---|---|
| Milestone: | Awaiting Review | Priority: | normal |
| Severity: | trivial | Version: | 6.3.1 |
| Component: | General | Keywords: | has-patch |
| Focuses: | Cc: |
Description
I noticed the function doesn't work well when multi-dimensional arrays are present:
Example:
Consider having following default params and settings.
$defaults = array(
'settings' => array(
'option1' => 'default-value-1',
'option2' => 'default-value-2'
)
);
$settings = array(
'settings' => array(
'option1' => 'new-value-1',
)
);
$return = wp_parse_args($settings, $defaults);
The above example will return:
Array
(
[settings] => Array
(
[option1] => new-value-1
)
)
It will completely ignore the option2 key.
My suggestion is to update wp_parse_args from:
if (is_array($defaults) && $defaults) {
return array_merge($defaults, $parsed_args);
}
with:
if ( is_array( $defaults ) && $defaults ) {
return array_replace_recursive($defaults, $parsed_args);
}
Change History (1)
This ticket was mentioned in PR #5229 on WordPress/wordpress-develop by zbozhilov.
2 years ago
#1
- Keywords has-patch added
Note: See
TracTickets for help on using
tickets.
https://core.trac.wordpress.org/ticket/59330