У меня есть массив с перечислением чисел, например:
$pageNumbers = array(1,2,3,4,5,6,7,8,9,10);
Теперь у меня есть номер активной страницы $currentPage
, и я хочу, чтобы на основе этого до и после 2 элементов - общее число 5.
$currentPage = 2
Возврат: array(1,2,3,4,5)
$currentPage = 6
Возврат: array(4,5,6,7,8)
$currentPage = 10
Возврат: array(6,7,8,9,10)
К сожалению, я не придумал элегантного и простого метода для решения этой проблемы (2x while, 1 большой foreach и т. Д.). Может быть, у вас есть идея.
Моя первая идея была:
foreach ($pageNumbers as $page) {
if($page < $currentPage+3 && $page > $currentPage-3) {
array_push(...);
}
}
Это будет работать для $currentPage = 6
, но если $currentPage = 1
, он вернет только 1,2,3
.