protected function doFetch() { while ((list($innerKey, $innerValue) = $this->innerValuesIterator->fetch()) === null) { if ((list($this->outerKey, $this->outerValue) = $this->outerIterator->fetch()) === null) { return null; } $this->innerValuesIterator = $this->getInnerValuesIterator($this->outerKey, $this->outerValue); $this->innerValuesIterator->rewind(); } $projectionFunction = $this->projectionFunction; return [$this->count++, $projectionFunction($this->outerValue, $innerValue, $this->outerKey, $innerKey)]; }
public function __construct(IIterator $values = null) { if ($values !== null) { $values->rewind(); while ($element = $values->fetch()) { $this->addRef($element[1]); } } }