public function merge($collection, callable $merger, $default = null)
    {
        $array = $this->collection_to_array($collection);
        foreach ($array as $key => $value) {
            $current = $this->get($key, $default);
            $this->set($key, $merger($current, $value));
        }
        return $this;
    }
public function merge($collection, callable $merger, $default = null)
    {
        $array = $this->collection_to_array($collection);
        foreach ($array as $key => $value) {
            $current = $this->get($key, $default);
            $this->set($key, $merger($current, $value));
        }
        return $this;
    }
public function merge ( $ collection , callable $ merger , $ default = null ) { $ array = $ this -> collection_to_array ( $ collection ) ; foreach ( $ array as $ key => $ value ) { $ current = $ this -> get ( $ key , $ default ) ; $ this -> set ( $ key , $ merger ( $ current , $ value ) ) ; } return $ this ; }
Merge the given collection into this map.

The merger callable decides how to merge the current map's value with
the given collection's value.  The merger callable receives two
arguments:
- This map's value at the given key
- The collection's value at the given key

If the current map does not have a value for a key in the collection,
then the default value is assumed.

@param Map|Arrayable|Jsonable|Traversable|object|array $collection
@param callable $merger
@param mixed $default
@return $this
@api
Merge the given collection into this map .