当前位置:首页 > PHP

php 数组实现分页

2026-02-16 14:29:27PHP

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 风格分页实现

对于需要更完整分页功能的情况,可以模仿 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 样式美化分页控件

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

php 数组实现分页

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

相关文章

php实现分页

php实现分页

PHP实现分页的基本方法 使用原生PHP实现分页功能需要结合数据库查询和HTML展示。以下是核心实现步骤: 数据库查询与分页逻辑 // 连接数据库 $conn = new mysqli('loca…

vue组件传值实现分页

vue组件传值实现分页

Vue组件传值实现分页的方法 在Vue中实现分页功能,通常需要父子组件之间的数据传递。以下是几种常见的传值方式: 使用props传递数据 父组件通过props向子组件传递当前页码和总页数等分页信息:…

php分页代码简单实现

php分页代码简单实现

基本分页实现 在PHP中实现分页功能通常需要结合MySQL的LIMIT子句。以下是一个基础实现示例: <?php // 数据库连接 $conn = mysqli_connect("localh…

js实现分页功能代码

js实现分页功能代码

分页功能实现方法 客户端分页(前端处理数据) 适用于数据量较小且已全部加载到前端的情况。 // 示例数据 const data = Array.from({length: 100}, (_, i)…

java如何初始化数组

java如何初始化数组

初始化数组的方法 在Java中,数组可以通过多种方式进行初始化。以下是几种常见的方法: 静态初始化(直接赋值) 在声明数组时直接指定元素值,适用于已知数组内容的情况: int[] numbers…

java中如何定义数组

java中如何定义数组

定义数组的基本语法 在Java中,数组是固定长度的同类型数据集合。定义数组需指定数据类型和数组名称,可通过两种方式声明: 数据类型[] 数组名;数据类型 数组名[]; 推荐使用第一种方式,更符合J…