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