это похоже на очень простую математику, но почему-то мой мозг не может думать ...
я пытаюсь реализовать разбиение на страницы, и мне нужно будет вычислить смещение элемента, чтобы использовать его для ограничения моего набора результатов. У меня проблемы с вычислением индекса, который должен иметь первый элемент страницы.
например.
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, но это не должно зависеть от языка
. Интересно, должно ли это быть на сайте обмена математическим стеком
Использование offset = (page - 1) * itemsPerPage + 1
Честно говоря, зависит. Я не специалист по PHP, но выложу и то, и другое. Если вы переносите свои записи в какую-либо форму коллекции (список, массив и т. Д.), Ваша формула должна быть:
offset = (page - 1) * itemsPerPage
Это потому, что большинство (опять же, я не специалист по PHP) массивов и списков используют 0 для их первый элемент. Если они не используют 0 для своего первого элемента и / или вы берете данные из таблицы или чего-то еще, где идентификаторы начинаются с 1, тогда это должно быть:
offset = (page - 1) * itemsPerPage + 1
Надеюсь, это понятно и поможет.