I would do as follows:
$newArray = []; $array = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, ]; $iter= new ArrayIterator($array); $seek = 0; $count = $iter->count(); $id = $iter->current(); $newArray[] = $id; $seek += 5; do { $iter->seek($seek); $id = $iter->current(); $newArray[] = $id; $seek += 1; if($seek >= $count) { break; } $iter->seek($seek); $id = $iter->current(); $newArray[] = $id; $seek += 5; }while($seek < $count); var_dump($newArray);
A simplified example:
$newArray = []; $array = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, ]; $count = count($array); $seek = 0; if(isset($array[$seek])) { $newArray[] = $array[$seek]; } while($seek < $count) { $seek += 5; if(isset($array[$seek])) { $newArray[] = $array[$seek]; } $seek += 1; if(isset($array[$seek])) { $newArray[] = $array[$seek]; } } var_dump($newArray);