Подобно тому, как физические упражнения, решения, который использует на SPL
class stripes extends ArrayIterator {
private $partial, $step;
public function __construct($array, $step) {
parent::__construct($array);
$this->step = $step;
$this->partial=0;
}
public function next() {
$this->partial++;
if ($this->partial >=$this->step) {
for($step=$this->step;$step;$step--)
parent::next();
$this->partial=0;
}
parent::next();
}
}
Он имеет довольно простое использование:
$input = array(23,24,45,56,56,78,45,67,56,45);
$iterator = new stripes($input,2);
$result = iterator_to_array($iterator)
В $result
у вас есть массив, который нужно. Вы можете изменить размер полос, просто изменяя второй параметр из конструктора полос без загрязнения вашего код в реальном времени space.
Ссылки:
ArrayIterator
iterator_to_array
Где 2 и 3? – hakre