php中分页公式,PHP最简单的分页公式

写网站的时候经常会用到分页,如果自己写分页可能会被分页这个看似简单的东西搞的头大。

举个例子,我这个博客如果用普通模式看的话,首页大概有40多页的分页,现在有这样的需求:

“不管现在在哪一页,总是显示前后共10页,当前页尽可能居中。如果总数不满10页,则全部显示。前后如果超出则向后或向前递推。”

在我博客上(我博客总是显示9页)表现的就是。

95ed672f4f13e681bae485d670f7b5d6.png

这个看似简单的功能,在逻辑上还是有点复杂的。

特殊情况1:

当前在第一页,显示的就是1~10页,而不是-3~6,也不是1~6

特殊情况2:

假设共有100页,当前在第100页。那就应该显示91~100,不是96~105,也不是96~100。

特殊情况3:

当前共5页,那么,不管现在是第几页,则都应该显示1~5。

如果分别考虑这三种情况写起来会很麻烦,所以我给出一小段代码来计算开始页码和结束页码。如下:

$b = $this->_page + round($this->_size / 2);

$a = $b + 1 - $this->_size;

$min = 1;

$max = $pageCount;

echo "a: $a \r\n";

echo "b: $b \r\n";

echo "min: $min \r\n";

echo "max: $max \r\n";

// 主要是下面的两行

$start = max($a - min(0, $a - $min) + min(0, $max - $b), $min);

$end = min($b + min(0, $max - $b) - min(0, $a - $min), $max);

for ($i=$start; $i<=$end; $i++) {

echo $i, "\r\n";

}

如果发现有什么问题或者代码有bug请留言给我

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值