📜  php 分页省略号 - PHP (1)

📅  最后修改于: 2023-12-03 15:18:27.844000             🧑  作者: Mango

PHP 分页省略号 - PHP

在网页上显示长列表时,通常需要分页来减少页面加载时间并提高用户体验。在分页导航栏中,如果有多页,通常显示当前页码以及前后若干页码,用省略号来表示中间省略的页码。因此,本片段将介绍如何使用 PHP 实现分页省略号。

准备工作

在开始之前,我们需要准备以下数据:

  • 每页显示的项数(分页大小)
  • 总项数
  • 当前页码
  • 每次显示的页码数量

我们可以使用如下代码获取这些数据:

$page_size = 10; // 每页显示的项数
$total_items = 100; // 总项数
$current_page = 5; // 当前页码
$page_count = 10; // 每次显示的页码数量
实现分页省略号

首先,我们需要计算出起始页码和结束页码。对于当前页码,我们可以以当前页码为中心,前后各取一半的页码数量:

$half_page_count = (int)($page_count / 2);
$start_page = $current_page - $half_page_count;
$end_page = $current_page + $half_page_count;

但是,如果起始页码小于 1,或者结束页码大于总页面数,我们需要对其进行调整:

if ($start_page < 1) {
  $start_page = 1;
  $end_page = $start_page + $page_count - 1;
}
if ($end_page > ceil($total_items / $page_size)) {
  $end_page = ceil($total_items / $page_size);
  $start_page = $end_page - $page_count + 1;
  if ($start_page < 1) {
    $start_page = 1;
  }
}

接下来就可以通过循环输出页码了。在输出页码前,我们需要输出省略号。如果当前页码距离起始页码超过一个页码,则需要输出省略号:

if ($start_page > 1) {
  echo '... ';
}

同样,如果当前页码距离结束页码超过一个页码,则需要输出省略号:

for ($i = $start_page; $i <= $end_page; $i++) {
  if ($i == $current_page) {
    echo "<strong>$i</strong> ";
  } else {
    echo "<a href=\"/page/$i\">$i</a> ";
  }
}
if ($end_page < ceil($total_items / $page_size)) {
  echo '...';
}

将上述代码整合到一起,就可以得到以下完整代码片段:

$page_size = 10; // 每页显示的项数
$total_items = 100; // 总项数
$current_page = 5; // 当前页码
$page_count = 10; // 每次显示的页码数量

$half_page_count = (int)($page_count / 2);
$start_page = $current_page - $half_page_count;
$end_page = $current_page + $half_page_count;

if ($start_page < 1) {
  $start_page = 1;
  $end_page = $start_page + $page_count - 1;
}
if ($end_page > ceil($total_items / $page_size)) {
  $end_page = ceil($total_items / $page_size);
  $start_page = $end_page - $page_count + 1;
  if ($start_page < 1) {
    $start_page = 1;
  }
}

if ($start_page > 1) {
  echo '... ';
}
for ($i = $start_page; $i <= $end_page; $i++) {
  if ($i == $current_page) {
    echo "<strong>$i</strong> ";
  } else {
    echo "<a href=\"/page/$i\">$i</a> ";
  }
}
if ($end_page < ceil($total_items / $page_size)) {
  echo '...';
}
结语

本片段介绍了如何使用 PHP 实现分页省略号。通过计算起始页码和结束页码,并在符合条件时输出省略号,就可以实现美观实用的分页导航栏了。