| @@ 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' ); |
|