dromru/iterable-chunk

Класс для разбиения итерируемых коллекций на пачки.

v2.0.0 2023-01-23 02:23 UTC

This package is auto-updated.

Last update: 2024-04-23 05:48:21 UTC


README

Latest Stable Version Tests Coverage Status Minimum PHP Version

Проблема

Нативная 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]