- array_slice: documentation ( source)
- implode: documentation ( source)
- max: documentation ( source)
- min: documentation ( source)
- printf: documentation ( source)
<?php
$a = [0, 1, 2, 3, 4, 5, 6, 7];
$count = count($a);
$span = 5; // most sensible with odd numbers
$center = (int)($span / 2);
foreach ($a as $i => $v) {
printf(
"%d: %s\n",
$i,
implode(
',',
array_slice(
$a,
min($count - $span, max(0, $i - $center)),
$span
)
)
);
}