flatten()

Flatten operator iterates over given stream of iterables and yields each item from each iterable in a single flat sequence.

By default, keys from inner iterables are not preserved, which can be overridden in constructor.

class RunOpenCode\Component\Dataset\Operator\Flatten
__construct(iterable<mixed, iterable<TKey, TValue>> $source, bool $preserveKeys = false)
Parameters:
  • $source – iterable<mixed, iterable<TKey, TValue>> Stream of streams to iterate over.

  • $preserveKeys – bool Should keys be preserved from the flattened stream, false by default.

getIterator()
Returns:

\Traversable<TKey, TValue> or \Traversable<int, TValue> Flattened stream.

Use cases

  • Use this operator to flatten nested structures, per example, to flatten buffer.

Example

 1<?php
 2
 3use RunOpenCode\Component\Dataset\Stream;
 4use RunOpenCode\Component\Dataset\Model\Buffer;
 5
 6new Stream($dataset)
 7    ->bufferCount(100)
 8    ->tap(function(Buffer $buffer): void {
 9        // Do a batch processing...
10    })
11    ->flatten(); // Continue with original stream.