$default ) { if ( ! array_key_exists( $key, $args ) ) { $args[ $key ] = $default; } elseif ( is_array( $default ) && ! wp_is_numeric_array( $default ) && ! empty( $default ) ) { $args[ $key ] = self::merge_deep( $args[ $key ], $default ); } } return $args; } /** * Read a nested key with a dotted path. * * @param array $source Source. * @param string $path Dotted path. * @param mixed $fallback Fallback. * @return mixed */ public static function get( array $source, $path, $fallback = null ) { foreach ( explode( '.', $path ) as $segment ) { if ( ! is_array( $source ) || ! array_key_exists( $segment, $source ) ) { return $fallback; } $source = $source[ $segment ]; } return $source; } }