| @@ 49-64 (lines=16) @@ | ||
| 46 | * @param callable $callback The function to map onto $value. | |
| 47 | * @return mixed The value with the callback applied to all non-arrays and non-objects inside it. | |
| 48 | */ | |
| 49 | 	function map_deep( $value, $callback ) { | |
| 50 | 		if ( is_array( $value ) ) { | |
| 51 | 			foreach ( $value as $index => $item ) { | |
| 52 | $value[ $index ] = map_deep( $item, $callback ); | |
| 53 | } | |
| 54 | 		} elseif ( is_object( $value ) ) { | |
| 55 | $object_vars = get_object_vars( $value ); | |
| 56 | 			foreach ( $object_vars as $property_name => $property_value ) { | |
| 57 | $value->$property_name = map_deep( $property_value, $callback ); | |
| 58 | } | |
| 59 | 		} else { | |
| 60 | $value = call_user_func( $callback, $value ); | |
| 61 | } | |
| 62 | ||
| 63 | return $value; | |
| 64 | } | |
| 65 | ||
| 66 | /** | |
| 67 | * A drop-in for a WordPress core function. | |
| @@ 142-157 (lines=16) @@ | ||
| 139 | return _http_build_query( $data, null, '&', '', false ); | |
| 140 | } | |
| 141 | ||
| 142 | function map_deep( $value, $callback ) { | |
| 143 | 	if ( is_array( $value ) ) { | |
| 144 | 		foreach ( $value as $index => $item ) { | |
| 145 | $value[ $index ] = map_deep( $item, $callback ); | |
| 146 | } | |
| 147 | 	} elseif ( is_object( $value ) ) { | |
| 148 | $object_vars = get_object_vars( $value ); | |
| 149 | 		foreach ( $object_vars as $property_name => $property_value ) { | |
| 150 | $value->$property_name = map_deep( $property_value, $callback ); | |
| 151 | } | |
| 152 | 	} else { | |
| 153 | $value = call_user_func( $callback, $value ); | |
| 154 | } | |
| 155 | ||
| 156 | return $value; | |
| 157 | } | |
| 158 | ||
| 159 | function urlencode_deep( $value ) { | |
| 160 | return map_deep( $value, 'urlencode' ); | |