function mapAndFilter (callable $fn, $arg = null)
  {
    $this->setIterator (new CallbackFilterIterator (new MapIterator ($this->getIterator (), $fn, $arg), function ($v) {
      return isset ($v);
    }));
    return $this;
  }
function mapAndFilter (callable $fn, $arg = null)
  {
    $this->setIterator (new CallbackFilterIterator (new MapIterator ($this->getIterator (), $fn, $arg), function ($v) {
      return isset ($v);
    }));
    return $this;
  }
function mapAndFilter ( callable $ fn , $ arg = null ) { $ this -> setIterator ( new CallbackFilterIterator ( new MapIterator ( $ this -> getIterator ( ) , $ fn , $ arg ) , function ( $ v ) { return isset ( $ v ) ; } ) ) ; return $ this ; }
Transforms each input data item, optionally filtering it out.

@param callable $fn  A callback that receives a value and key and returns a new value or `null` to discard it.<br>
It can also receive the key by reference and change it.
<p>Ex:<code>  ->mapAndFilter (function ($v,&$k) { $k=$k*10; return $v>5? $v*100:null;})</code>
@param mixed    $arg An optional extra argument to be passed to the callback on every iteration.
<p>The callback can change the argument if it declares the parameter as a reference.
@return $this
Transforms each input data item optionally filtering it out .