Make WordPress Core


Ignore:
Timestamp:
12/26/2015 05:21:14 AM (8 years ago)
Author:
dd32
Message:

Allow map_deep() to work with object properties containing a reference. Restores the previous behaviour of stripslashes_deep().

Props jeff@…, swissspidy.
See #22300, [35252].
Fixes #35058.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/formatting.php

    r36097 r36100  
    38853885 */
    38863886function map_deep( $value, $callback ) {
    3887     if ( is_array( $value ) || is_object( $value ) ) {
    3888         foreach ( $value as &$item ) {
    3889             $item = map_deep( $item, $callback );
    3890         }
    3891         return $value;
     3887    if ( is_array( $value ) ) {
     3888        foreach ( $value as $index => $item ) {
     3889            $value[ $index ] = map_deep( $item, $callback );
     3890        }
     3891    } elseif ( is_object( $value ) ) {
     3892        $object_vars = get_object_vars( $value );
     3893        foreach ( $object_vars as $property_name => $property_value ) {
     3894            $value->$property_name = map_deep( $property_value, $callback );
     3895        }
    38923896    } else {
    3893         return call_user_func( $callback, $value );
    3894     }
     3897        $value = call_user_func( $callback, $value );
     3898    }
     3899
     3900    return $value;
    38953901}
    38963902
Note: See TracChangeset for help on using the changeset viewer.