【发布时间】:2010-09-23 09:50:42
【问题描述】:
所以我在 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
【问题讨论】:
-
这不是 PHP 问题!请不要添加 PHP 标签,因为代码示例甚至不是用 PHP 编写的!
-
您可能希望提供工作示例代码,这样想要自己测试您的逻辑的人就不必用他们自己的语言重新实现您的“伪”代码所以他们可以测试它做任何事情。
-
好的,我把它改成了 PHP 代码:/
标签: php pagination logic