protected function _recursiveTraveler($function, $methodAttributes, $data)
    {
        foreach ($data as $key => $value) {
            if (is_array($value)) {
                $data[$key] = $this->_recursiveTraveler($function, $methodAttributes, $value);
            } else {
                $data[$key] = $this->_callUserFunction($function, $key, $value, $methodAttributes);
            }
        }

        return $data;
    }
protected function _recursiveTraveler($function, $methodAttributes, $data)
    {
        foreach ($data as $key => $value) {
            if (is_array($value)) {
                $data[$key] = $this->_recursiveTraveler($function, $methodAttributes, $value);
            } else {
                $data[$key] = $this->_callUserFunction($function, $key, $value, $methodAttributes);
            }
        }

        return $data;
    }
protected function _recursiveTraveler ( $ function , $ methodAttributes , $ data ) { foreach ( $ data as $ key => $ value ) { if ( is_array ( $ value ) ) { $ data [ $ key ] = $ this -> _recursiveTraveler ( $ function , $ methodAttributes , $ value ) ; } else { $ data [ $ key ] = $ this -> _callUserFunction ( $ function , $ key , $ value , $ methodAttributes ) ; } } return $ data ; }
allow to change some data in multi level arrays

@param mixed $methodAttributes
@param mixed $data
@param array|string|\Closure $function
@return mixed
allow to change some data in multi level arrays