所以我在 PHP 中执行此操作,但这是一个逻辑问题,因此我将尝试尽可能通用地编写它。
首先是这个分页脚本的工作原理:
- for(绘制前三页链接)
- if (如果#1 的页面和#3 的页面之间有页面,则绘制省略号 (...) )
- for(绘制当前页面和它的每一侧的两个页面链接)
- if (如果在#3 的页面和#5 的页面之间有页面,则绘制省略号 (...) )
- for(绘制最后三页链接)
问题是当页面数量较少时(当页面计数为 10 时我注意到这一点)应该有一个省略号,但没有绘制。
上代码:
$page_count = 10; //in actual code this is set properly
$current_page = 1; //in actual code this is set properly
for ($i = 1;$i <= 3;$i++)
{
if ($page_count >= $i)
echo $i;
}
if ($page_count > 3 && $current_page >= 7)
echo "...";
for ($i = $current_page - 2;$i <= current_page + 2;$i++)
{
if ($i > 3 && $i < $page_count - 2)
echo $i;
}
if ($page_count > 13 && $current_page < $page_count - 5)
echo "...";
for ($i = $page_count - 2;$i <= $page_count;$i++)
{
if ($page_count > 3)
echo $i;
}
所以我认为最好的办法是修改两个省略号 if 语句中的一个以包含这样的情况,但是我已经尝试过并且被难住了。
另请注意,为了便于阅读,我压缩了这段代码,所以请不要提供诸如“那些 for 循环无效,因为它们会为每次迭代重新计算 current_page - 2”之类的提示,因为我知道 :)
对于那些想要查看此逻辑当前如何工作的细分的人,这里是带有迭代 $page_count 和 $current_page 的示例输出(已修改)。 http://rafb.net/p/TNa56h71.html