Как разбить массив на страницы
Короткий ответ
array_slice() берёт нужную порцию: смещение — номер страницы минус один, умноженный на размер страницы:
<?php
$items = range(1, 23);
$page = 3;
$perPage = 5;
echo implode(', ', array_slice($items, ($page - 1) * $perPage, $perPage));Результат:
11, 12, 13, 14, 15Сколько всего страниц
Разделите количество на размер страницы и округлите вверх:
<?php
$items = range(1, 23);
echo (int) ceil(count($items) / 5);Результат:
5Данные из базы
Так разбивают только небольшие массивы. Записи из базы данных режут самим запросом — LIMIT и OFFSET, — чтобы не загружать в память всю таблицу.
Функции из этого ответа
- array_slice — Возвращает часть массива.
- ceil — Округляет число вверх до целого.
- count — Возвращает количество элементов массива.