wp_parse_args recursive of multidimensional arrays
WordPress

wp_parse_args recursive of multidimensional arrays

Andrei Surdu Andrei Surdu ·

wp_parse_args is a wonderful function for combining two arrays, objects, or strings in WordPress. But it lacks the possibility to deeply merge multidimensional arrays.

Usually, I use this function just to merge arrays. I don’t use it to merge objects or strings. Most of the time I have large arrays which don’t need to be combined with more than one level. And that’s perfectly fine, to use the default WP function. However, sometimes I need to go deeper and combine the arrays down to the highest level. How do we do that? Simply by creating a new function of course.

Note: This new function will combine only arrays. Don’t pass objects or strings like you’d do in wp_parse_args.

if ( ! function_exists( 'awps_recursive_parse_args' ) ) {
    function awps_recursive_parse_args( $args, $defaults ) {
        $new_args = (array) $defaults;
 
        foreach ( $args as $key => $value ) {
            if ( is_array( $value ) && isset( $new_args[ $key ] ) ) {
                $new_args[ $key ] = awps_recursive_parse_args( $value, $new_args[ $key ] );
            }
            else {
                $new_args[ $key ] = $value;
            }
        }
 
        return $new_args;
    }
}

If you are looking for a test case, see my answer on wp.org: https://developer.wordpress.org/reference/functions/wp_parse_args/#comment-2556

Happy WordPressing :))

Comments

Share your thoughts and join the conversation

Loading comments...

Leave a Comment

Your email will not be published

Comments are moderated and will appear after approval

0/2000