dromru / iterable-chunk
Класс для разбиения итерируемых коллекций на пачки.
Installs: 8 343
Dependents: 0
Suggesters: 0
Security: 0
Stars: 5
Watchers: 4
Forks: 0
Open Issues: 0
Requires
- php: >=7.4
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.7
- phpbench/phpbench: ^1.2
- phpmd/phpmd: ^2.6
- phpstan/extension-installer: ^1.0
- phpstan/phpstan: ^0.12.32
- phpstan/phpstan-deprecation-rules: ^0.12.2
- phpunit/phpunit: ^9.5.20
- roave/security-advisories: dev-master
- squizlabs/php_codesniffer: ^3.6
- symplify/coding-standard: ^9.0
- symplify/easy-coding-standard: ^9.0
README
Проблема
Нативная array_chunk не поддерживает iterable
.
Реализация ChunkedIterator
от Guzzle уступает по скорости обхода данной реализации.
Решение
iterable-chunk
- пакет, который предоставляет класс для разбиения итерируемых коллекций iterable
на пачки.
P.S. Реализован с использованием генераторов, поэтому до 8 раз быстрее ChunkedIterator.
Benchmark
Пример использования
function getIterable(): iterable { yield from [1, 2, 3, 4, 5]; } $chunks = new IterableChunk(getIterable(), 2, true); foreach ($chunks as $chunk) { print_r($chunk); }
[0 => 1, 1 => 2]
[2 => 3, 3 => 4]
[4 => 5]