From bf0e91919aabfc6e5a34b584aca32fccbfc137ec Mon Sep 17 00:00:00 2001 From: Brian Miyaji Date: Fri, 5 Nov 2021 23:56:41 +0900 Subject: [PATCH] Make sp_array_value map recursively for multidimensional arrays --- includes/sp-core-functions.php | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/includes/sp-core-functions.php b/includes/sp-core-functions.php index 0cf24dc8..3e58bb2c 100644 --- a/includes/sp-core-functions.php +++ b/includes/sp-core-functions.php @@ -305,6 +305,15 @@ if ( !function_exists( 'sp_array_between' ) ) { } } +if ( !function_exists( 'sp_array_map_recursive' ) ) { + function sp_array_map_recursive( callable $func, array $arr ) { + array_walk_recursive( $arr, function( &$v ) use ( $func ) { + $v = $func( $v ); + } ); + return $arr; + } +} + if ( !function_exists( 'sp_array_value' ) ) { function sp_array_value( $arr = array(), $key = 0, $default = null, $sanitize = false ) { $value = ( isset( $arr[ $key ] ) ? $arr[ $key ] : $default ); @@ -313,16 +322,16 @@ if ( !function_exists( 'sp_array_value' ) ) { if ( is_array( $value ) ): switch ( $sanitize ): case 'int': - $value = array_map( 'intval', $value ); + $value = sp_array_map_recursive( 'intval', $value ); break; case 'title': - $value = array_map( 'sanitize_title', $value ); + $value = sp_array_map_recursive( 'sanitize_title', $value ); break; case 'text': - $value = array_map( 'sanitize_text_field', $value ); + $value = sp_array_map_recursive( 'sanitize_text_field', $value ); break; case 'key': - $value = array_map( 'sanitize_key', $value ); + $value = sp_array_map_recursive( 'sanitize_key', $value ); break; endswitch; else: