1 回答
TA贡献1946条经验 获得超3个赞
嘿,大灰!
你快到了。你只需要检查几件事:
在页数开始或结束的两页内是 $i。这很容易,对吧?
if ($i <= 2 || $i >= $count_pages - 2)
$i 是否在当前页面的两页之内?
这是通过
if (abs($i - $page) <= 2)
所以现在问题仍然存在:什么时候放省略号?
如果每次不满足上述条件时都只 echo '...' ,您最终会得到一大堆省略号,对吧?
此外,您可能需要两个省略号(假设有 20 页并且您在第 10 页。您需要 '1 2 ... 8 9 10 11 12 ... 19 20)。
我确信有一种更优雅的方法,但我只使用一个标志 ($outOfRange),当满足上述任何条件时设置为 false,但在不满足时设置为 true。然后我们仅在不满足条件但 $outOfRange 仍然为 false 时回显 '...'。所以我们有:
$outOfRange = false;
for($i = 1; $i <= $count_pages; $i++) {
if ($i <= 2 || $i >= $count_pages - 2 || abs($i - $page) <= 2) {
// page number should be echoed so do as you did before
$outOfRange = false;
if($i == $page) {
echo "<li><a class='active-page' href='./latest.php?page=$i'>$i</a></li>";
} else {
echo "<li><a href='./latest.php?page=$i'>$i</a></li>";
}
} else {
// we are out of range! if not already out of range, echo ellipsis
if (!$outOfRange) {
echo ' ... ';
}
$outOfRange = true;
}
}
- 1 回答
- 0 关注
- 155 浏览
添加回答
举报