I have come up with a recursive function which applies `trim()` recursively to all string members of an array/object.

I don't have any specific quandaries about my code so I am receptive to all feedback.

    <?php
    /**
     * trim_r
     * 
     * Recursively trim an array's or object's string values
     * Preserves all non-string values
     * 
     * @access	public
     * @param	mixed
     * @param	mixed
     * @return	mixed
     */
    function &trim_r( &$o, $character_mask = null )
    {
        // Only apply trim() to strings
        if( is_string( $o ) )
        {
            // Respect the $character_mask; cannot pass null as 2nd parameter for some HHVM versions
            $o = ( $character_mask === null ? trim( $o ) : trim( $o, $character_mask ) );
        }
        elseif( is_array( $o ) || is_object( $o ) )
        {
            // Loop this array/object and apply trim_r() to its members
            foreach( $o as &$v )
            {
                trim_r( $v );
            }
        }
        
        // Supply this just in case the invoker wishes to receive result as a reference
        return $o;
    }