for ($i = 0; $i < count($array); $i++) { if ($i + 10 < count($array)) $a = array_slice($array, $i, 10); else $a = array_merge(array_slice($array, $i), array_slice($array, 0, 10-(count($array)-$i))); // do something with $a before it is over-written on the next iteration }
This test:
<?php $array = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19); for ($i = 0; $i < count($array); $i++) { if ($i + 10 < count($array)) $a = array_slice($array, $i, 10); else $a = array_merge(array_slice($array, $i), array_slice($array, 0, 10-(count($array)-$i))); echo "<h2>$i</h2>\n<pre>".print_r($a,true)."</pre><br />\n"; }
As a result:
0 Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 9 [9] => 10 ) ... 9 Array ( [0] => 10 [1] => 11 [2] => 12 [3] => 13 [4] => 14 [5] => 15 [6] => 16 [7] => 17 [8] => 18 [9] => 19 ) 10 Array ( [0] => 11 [1] => 12 [2] => 13 [3] => 14 [4] => 15 [5] => 16 [6] => 17 [7] => 18 [8] => 19 [9] => 1 ) ... 18 Array ( [0] => 19 [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 [6] => 6 [7] => 7 [8] => 8 [9] => 9 )
source share