php自写一个分页算法

梦浪的小虾米
2018-11-29 / 1 评论 / 3,962 阅读 / 正在检测是否收录...

最终效果:

我的逻辑:去掉极值,然后处理几种特殊情况

大家看看逻辑就可以了,代码里面写的都是样式

$li = '';
        //极值处理,去掉极值
        if ($page_arr['pagenum'] > $page_arr['pagecount'] ) {
            $page_arr['pagenum'] = $page_arr['pagecount'];
        }elseif ($page_arr['pagenum'] < 1) {
            $page_arr['pagenum'] = 1;
        }

        //上一页
        if ($page_arr['pagenum'] > 1) {
            $pre_page = $page_arr['pagenum'] - 1;
            $li .= '<span><a class="button" href="/' . $method . '?page=' . $pre_page .'">上一页</a></span>';

            if ($page_arr['pagenum'] > 1+1) {
                $li .= '<span><a class="button" href="/' . $method . '?page=1">1</a></span>';
            }
            if ($page_arr['pagenum'] > 1+1+1) {
                $li .= '<span><a class="button" href="javascript:;">...</a></span>';
            }

            $li .= '<span><a class="button" href="/' . $method . '?page=' . $pre_page . '">' . $pre_page . '</a></span>';
        }

        //当前页
        $li .= '<span class="active"><a class="button" href="/' . $method . '?page='. $page_arr['pagenum'] .'">' . $page_arr['pagenum'] . '</a></span>';

        //下一页
        if ($page_arr['pagenum'] < $page_arr['pagecount']) {

            $pre_page = $page_arr['pagenum'] + 1;
            $li .= '<span><a class="button" href="/' . $method . '?page='. $pre_page .'">'. $pre_page .'</a></span>';
            if ($page_arr['pagenum'] < $page_arr['pagecount']-2) {
                $li .= '<span><a class="button" href="javascript:;">...</a></span>';
            }
            if ($page_arr['pagenum'] < $page_arr['pagecount']-1) {
                $li .= '<span><a class="button" href="/' . $method . '?page='. $page_arr['pagecount'] .'">' . $page_arr['pagecount'] . '</a></span>';
            }
            $li .= '<span><a class="button" href="/' . $method . '?page='. $pre_page .'">下一页</a></span>';
        }
        return $li;
0

评论

博主关闭了所有页面的评论