bentools/flatten-iterator

Flattens Traversable or arrays into one iterator.

Maintainers

👁 bpolaszek

Package info

github.com/bpolaszek/flatten-iterator

pkg:composer/bentools/flatten-iterator

Statistics

Installs: 2 034

Dependents: 1

Suggesters: 0

Stars: 3

Open Issues: 0

1.1 2022-11-11 06:02 UTC

Requires

  • php: >=7.4

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT bee83e00d5acc5d53c7eb0db1a8f836cec10a9bd

generatoriteratorarraytraversableiterableflattenmultidimensionnal

This package is auto-updated.

Last update: 2026-06-11 14:19:44 UTC


README

👁 Latest Stable Version
👁 License
👁 CI Workflow
👁 codecov
👁 Quality Score
👁 Total Downloads

FlattenIterator

Flattens arrays and / or traversables. Accepts any iterable composed of iterables.

PHP 7.1+

Usage

use BenTools\FlattenIterator\FlattenIterator;

require_once __DIR__ . '/vendor/autoload.php';

$cities = [
 [
 'london' => 'London',
 'paris' => 'Paris',
 ],
 new \ArrayIterator([
 'berlin' => 'Berlin',
 'bruxelles' => 'Bruxelles',
 ]),
 (function () {
 yield 'budapest' => 'Budapest';
 yield 'prague' => 'Prague';
 })(),
];

foreach (new FlattenIterator($cities) as $city) {
 var_dump($city);
}

Output:

string(6) "London"
string(5) "Paris"
string(6) "Berlin"
string(9) "Bruxelles"
string(8) "Budapest"
string(6) "Prague"

Array output and fluent interface

You can use the built-in function to generate your flattened data, and export them as an array:

use function BenTools\FlattenIterator\flatten;
print_r(flatten($cities)->asArray());

Output:

array(6) {
 [0]=>
 string(6) "London"
 [1]=>
 string(5) "Paris"
 [2]=>
 string(6) "Berlin"
 [3]=>
 string(9) "Bruxelles"
 [4]=>
 string(8) "Budapest"
 [5]=>
 string(6) "Prague"
}

Preserve Keys

Set $preserveKeys to true to preserve keys in your flattened data:

var_dump(flatten($cities, $preserveKeys = true)->asArray());

Output:

array(6) {
 ["london"]=>
 string(6) "London"
 ["paris"]=>
 string(5) "Paris"
 ["berlin"]=>
 string(6) "Berlin"
 ["bruxelles"]=>
 string(9) "Bruxelles"
 ["budapest"]=>
 string(8) "Budapest"
 ["prague"]=>
 string(6) "Prague"
}

Installation

composer require bentools/flatten-iterator

Unit tests

./vendor/bin/phpunit

See also

bentools/cartesian-product

bentools/string-combinations

bentools/iterable-functions