for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Smoren\PartialIntersection\Util;
/**
* @implements \Iterator<array<mixed>>
*/
class JustifyMultipleIterator implements \Iterator
{
* @var array<\Iterator<mixed>>
array<\Iterator<mixed>>
2
protected array $iterators = [];
* @var int
protected int $index = 0;
* @param iterable<mixed> ...$iterables
public function __construct(iterable ...$iterables)
foreach ($iterables as $iterable) {
$this->iterators[] = IteratorFactory::makeIterator($iterable);
}
* {@inheritDoc}
*
* @return array<mixed>
public function current(): array
return array_map(
fn (\Iterator $iterator) => $iterator->valid() ? $iterator->current() : NoValueMonad::getInstance(),
$this->iterators
);
public function next(): void
foreach ($this->iterators as $iterator) {
if ($iterator->valid()) {
$iterator->next();
$this->index++;
* @return int
public function key(): int
return $this->index;
public function valid(): bool
return true;
return false;
public function rewind(): void
$iterator->rewind();
$this->index = 0;