Есть массив:
Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
Нужна красивая функция, которая будет возвращать:
8 - массив Array(6, 7, 8, 9, 10),12 - массив Array(10, 11, 12, 13, 15),1 - массив Array(1, 2, 3, 4, 5),2 - массив Array(1, 2, 3, 4, 5),15 - массив Array(11, 12, 13, 14, 15),14 - массив Array(11, 12, 13, 14, 15)эмм
function returnClosest($array, $position, $offset = 2){
$position--;
if(($position + $offset * 2 + 1) > count($array)){
$position = count($array) - ($offset + 1);//10 - 2
}
return array_slice($array, $position - $offset, $offset * 2 + 1);
}
$arr = array(1,2,3,4,5,6,7,8,9,0);
var_dump(returnClosest($arr, 10));
var_dump(returnClosest($arr, 5));
var_dump(returnClosest($arr, 1));
//Получаем результаты, приведенные ниже
array(5) ( 6, 7, 8, 9, 0 )
array(5) ( 3, 4, 5, 6, 7 )
array(5) ( 1, 2, 3, 4, 5 )
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости