当前位置:首页 > PHP

php 数组实现分页

2026-02-16 14:29:27PHP

PHP 数组分页实现方法

在 PHP 中,可以通过数组切片和计算偏移量实现分页功能。以下是两种常见实现方式:

基础数组分页实现

php 数组实现分页

function paginateArray($array, $page, $perPage) {
    $totalItems = count($array);
    $totalPages = ceil($totalItems / $perPage);
    $offset = ($page - 1) * $perPage;

    return [
        'data' => array_slice($array, $offset, $perPage),
        'total' => $totalItems,
        'per_page' => $perPage,
        'current_page' => $page,
        'last_page' => $totalPages
    ];
}

// 使用示例
$dataArray = range(1, 100); // 示例数组
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$perPage = 10;

$result = paginateArray($dataArray, $page, $perPage);

带样式分页链接生成

function generatePaginationLinks($currentPage, $totalPages, $url = '?page=') {
    $links = '';
    $range = 2; // 显示当前页前后页数

    for ($i = 1; $i <= $totalPages; $i++) {
        if ($i == $currentPage) {
            $links .= "<span class='current'>$i</span>";
        } elseif ($i >= $currentPage - $range && $i <= $currentPage + $range) {
            $links .= "<a href='{$url}{$i}'>$i</a>";
        }
    }

    if ($currentPage > 1) {
        $prev = $currentPage - 1;
        $links = "<a href='{$url}{$prev}'>&laquo; 上一页</a>" . $links;
    }

    if ($currentPage < $totalPages) {
        $next = $currentPage + 1;
        $links .= "<a href='{$url}{$next}'>下一页 &raquo;</a>";
    }

    return $links;
}

Laravel 风格分页实现

php 数组实现分页

对于需要更完整分页功能的情况,可以模仿 Laravel 的分页器:

class ArrayPaginator {
    protected $items;
    protected $perPage;
    protected $currentPage;
    protected $total;

    public function __construct($items, $perPage, $currentPage) {
        $this->total = count($items);
        $this->items = array_slice($items, ($currentPage - 1) * $perPage, $perPage);
        $this->perPage = $perPage;
        $this->currentPage = $currentPage;
    }

    public function links() {
        $totalPages = ceil($this->total / $this->perPage);
        return generatePaginationLinks($this->currentPage, $totalPages);
    }

    public function items() {
        return $this->items;
    }
}

使用注意事项

  • 确保页码参数经过验证和类型转换,防止 SQL 注入
  • 对于大型数组,考虑性能问题,可能需要改用数据库分页
  • 前端显示时可以添加 CSS 样式美化分页控件

这些方法提供了从简单到完整的不同实现方案,可根据项目需求选择适合的方式。

标签: 分页数组
分享给朋友:

相关文章

java如何创建数组

java如何创建数组

创建数组的基本方法 在Java中,数组是固定大小的同类型元素集合。创建数组需要声明数组类型并初始化。 声明数组 语法格式为 数据类型[] 数组名 或 数据类型 数组名[]: int[] arr1;…

vue 实现分页效果

vue 实现分页效果

使用 Element UI 实现分页 Element UI 提供了现成的分页组件 el-pagination,适合快速集成到 Vue 项目中。 安装 Element UI: npm install…

vue实现滚动分页

vue实现滚动分页

实现滚动分页的基本思路 滚动分页(Infinite Scroll)是一种常见的前端分页加载方式,当用户滚动到页面底部时自动加载下一页数据。Vue 结合现代前端工具可以轻松实现这一功能。 监听滚动事件…

vue中实现分页

vue中实现分页

vue中实现分页的方法 使用Element UI的分页组件 Element UI提供了现成的分页组件el-pagination,适合快速集成。需先安装Element UI库。 安装命令: npm…

vue分页怎么实现

vue分页怎么实现

Vue 分页实现方法 使用 Element UI 的分页组件 Element UI 提供了现成的分页组件 el-pagination,适合快速集成。需要先安装 Element UI 库。 <t…

vue实现分页6

vue实现分页6

Vue实现分页的6种方法 基础分页组件实现 使用Vue的v-for指令和计算属性实现基础分页功能。通过计算总页数并动态渲染页码按钮,结合v-model绑定当前页码。 <template>…