php - возвращает массив на основе ключа диапазона - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть массив с перечислением чисел, например:

$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.

1 Ответ

0 голосов
/ 05 ноября 2018

Используйте array_slice и вырежьте ту часть массива, которая вам нужна.

Я использую if, чтобы увидеть, где нарезать массив.

if($currentPage < 3){
    $arr = array_slice($pageNumbers,0,5);
}elseif($currentPage > count($pageNumbers)-2){
    $arr = array_slice($pageNumbers,-5,5);
}else{
    $arr = array_slice($pageNumbers,$currentPage-3,5);
}

См. Рабочий пример ниже.
https://3v4l.org/fpOFQ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...