Расчет смещения элемента для разбивки на страницы

это похоже на очень простую математику, но почему-то мой мозг не может думать ...

я пытаюсь реализовать разбиение на страницы, и мне нужно будет вычислить смещение элемента, чтобы использовать его для ограничения моего набора результатов. У меня проблемы с вычислением индекса, который должен иметь первый элемент страницы.

например.

with 1 page having 10 items

page 1 will have items 1 - 10
page 2 ............... 11 - 20
page 3 ............... 21 - 30

Я подумал о

offset = page * itemsPerPage + 1

, но это не относится к странице 1. Должна быть формула для этого? Я использую PHP / Zend_Paginator / Doctrine2, но это не должно зависеть от языка

. Интересно, должно ли это быть на сайте обмена математическим стеком

46
задан Jiew Meng 19 August 2010 в 10:50
поделиться

2 ответа

Использование offset = (page - 1) * itemsPerPage + 1

94
ответ дан 26 November 2019 в 20:05
поделиться

Честно говоря, зависит. Я не специалист по PHP, но выложу и то, и другое. Если вы переносите свои записи в какую-либо форму коллекции (список, массив и т. Д.), Ваша формула должна быть:

offset = (page - 1) * itemsPerPage

Это потому, что большинство (опять же, я не специалист по PHP) массивов и списков используют 0 для их первый элемент. Если они не используют 0 для своего первого элемента и / или вы берете данные из таблицы или чего-то еще, где идентификаторы начинаются с 1, тогда это должно быть:

offset = (page - 1) * itemsPerPage + 1

Надеюсь, это понятно и поможет.

34
ответ дан 26 November 2019 в 20:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: