注册 登录
编程论坛 PHP技术论坛

分页函数中几句代码求解释!

cssart 发布于 2011-06-12 09:08, 609 次点击
这两天看到一本PHP教材中的一个分页函数,输出大概是这样的:
“上一页 … 4 5 6 7 8 … 下一页”(每页显示的页号链接数量设置为5)
但是涉及到每页显示的页号上限和下限值的定义方法和输出时,有下面两个疑问,麻烦各位帮忙解释一下,不胜感激!


1. 当前页显示的页码范围的上限和下限,如设置的范围$range是5,当前页是6,则$lrange和$rrange分别是4和8.请教一下,为什么红字那里是0而不是1?因为下限不可能是0呵,最小也就是1了。是不是呢?
        $lrange = max(1, $page - (($range - 1) / 2));
        $rrange = min($numofpages, $page + (($range - 1) / 2));
        if (($rrange - $lrange) < ($range - 1)) {
            if ($lrange == 1) {
                $rrange = min($lrange + ($range - 1), $numofpages);
            } else {
                $lrange = max($rrange - ($range - 1), 0);
            }
        }


    2.循环输出页码链接,为什么这里for循环里的初始值和条件不是前面得出的上限和下限,而是1和总页数?如果直接设置为下限和上限值,里面输入页号链接时就不要再这样判断了 if ($lrange <= $i and $i <= $rrange),是不是?
        for($i = 1; $i <= $numofpages; $i++) {
            if ($i == $page) {
                $pagelinks .= $i;
            } else {
                if ($lrange <= $i and $i <= $rrange) {
                    $pagelinks .= '<a href="' . $currpage . '&page=' . $i .
                        '">' . $i . '</a>';
                }
            }
        }

多谢!


[ 本帖最后由 cssart 于 2011-6-12 09:10 编辑 ]
4 回复
#2
cssart2011-06-12 10:03
顶一下。
#3
try_catch2011-06-17 09:20
看了20分钟,我同意你的看法。
#4
cssart2011-06-23 17:41
呵呵,多谢,印刷错误也是有的,不过还是有些不放心,希望理解深些.
#5
yifeng11202011-09-01 11:00
看了几眼,一直没看明白
1