当前位置: 首页> 最新文章列表> 如何用 PHP 的 ceil() 函数配合 count() 来实现简单实用的分页逻辑?

如何用 PHP 的 ceil() 函数配合 count() 来实现简单实用的分页逻辑?

M66 2025-06-12

在开发网站的过程中,分页是一个非常常见的功能。无论是展示文章列表、产品清单还是评论数据,分页都可以有效地提升用户体验,并避免一次性加载过多内容对服务器性能造成影响。本文将以 PHP 为例,讲解如何使用 ceil() 函数配合 count() 来实现一个简单实用的分页逻辑。

理解分页的基本概念

分页的核心思想是将一大批数据分成若干“页”,每页只展示一部分数据。例如,如果我们有 100 条记录,并希望每页展示 10 条,那么就需要 10 页。

要实现分页,我们需要以下几个关键变量:

  • 总记录数:使用 count() 函数获取。

  • 每页显示的记录数:可以固定为一个常量或从请求参数中获取。

  • 当前页码:一般从 GET 请求中获取,例如 $_GET['page']

  • 总页数:通过总记录数除以每页记录数,并用 ceil() 向上取整得到。

示例代码实现

假设我们有一组文章数据保存在一个数组中:

<?php
$articles = [
    '文章 1',
    '文章 2',
    '文章 3',
    '文章 4',
    '文章 5',
    '文章 6',
    '文章 7',
    '文章 8',
    '文章 9',
    '文章 10',
    '文章 11',
    '文章 12'
];

$perPage = 5; // 每页显示 5 条
$totalItems = count($articles); // 总记录数
$totalPages = ceil($totalItems / $perPage); // 总页数

$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$page = max(1, min($page, $totalPages)); // 保证页码在合理范围内

$offset = ($page - 1) * $perPage; // 当前页起始数据位置
$currentItems = array_slice($articles, $offset, $perPage);

foreach ($currentItems as $item) {
    echo "<p>$item</p>";
}
?>

分页链接的生成

为了让用户可以点击跳转不同页面,我们需要生成分页导航链接。示例如下:

<?php
echo '<div class="pagination">';
for ($i = 1; $i <= $totalPages; $i++) {
    if ($i == $page) {
        echo "<strong>$i</strong> ";
    } else {
        echo "<a href=\"https://m66.net/list.php?page=$i\">$i</a> ";
    }
}
echo '</div>';
?>

这样用户点击链接时就可以跳转到不同页码,而程序会根据页码显示对应的数据内容。

小结

通过 count() 获取总数据量,再使用 ceil() 计算出总页数,我们就可以实现一个简单而实用的分页逻辑。搭配 array_slice() 和用户传入的页码参数,PHP 可以高效地处理分页任务。

这个方法适用于中小规模的数据分页显示,对于大规模数据更推荐数据库层级的 LIMIT 分页优化。但无论哪种方式,理解 ceil()count() 的结合是掌握分页的第一步。