<?php
function chunk_iterator(Iterator $it, int $n)
{
$chunk = [];
for($i = 0; $it->valid(); $i++){
$chunk[] = $it->current();
$it->next();
if(count($chunk) == $n){
yield $chunk;
$chunk = [];
}
}
if(count($chunk)){
yield $chunk;
}
}
// For demonstration, create an iterator from array
$arr = range(20, 40, 1);
$it = new ArrayIterator($arr);
// Iterate over the generator
foreach(chunk_iterator($it, 6) as $c){
echo implode(',', $c)."\n";
}
- Output for 7.1.0 - 7.1.33, 7.2.0 - 7.2.34, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.31, 8.2.0 - 8.2.26, 8.3.0 - 8.3.14, 8.4.1
- 20,21,22,23,24,25
26,27,28,29,30,31
32,33,34,35,36,37
38,39,40
preferences:
87.25 ms | 407 KiB | 5 Q