我最近做了一些分页并使用了以下内容:
if ( $totalPages > $pagesToShow ) {
$start = $pageNumber - floor($pagesToShow/2);
$end = $pageNumber + floor($pagesToShow/2);
while ( $start < 1 ) {
$start++;
$end++;
}
while ( $end > $totalPages ) {
$start--;
$end--;
}
} else {
$start = 1;
$end = $totalPages;
}
找出开始和结束周围页面列表的位置。这样可以创建一个分页列表,如&lt;&lt; &LT; 1 b <2> 3 4 5> &GT;&GT;”。
只是想知道是否有更好的方法,因为使用这样的循环似乎有点奇怪。
答案 0 :(得分:1)
您可以替换第一个循环
while ( $start < 1 ) {
$start++;
$end++;
}
与
if($start < 1)
{
$end += (1 - $start);
$start = 1;
}
可以为第二个循环做类似的事情,但反过来说:
if ( $end > $totalPages ) {
$start -= ($end - $totalPages);
$end = $totalPages;
}
编辑:修剪超出范围的页码更容易,用以下代码替换您的示例代码:
$start = $pageNumber - $pagesToShow;
$end = $pageNumber + $pagesToShow;
if($start < 1)
$start = 1;
if($end > $totalPages)
$end = $totalPages;
$pagesToShow
是在当前页面之后和之前显示的最大页面数量(如果不是超出范围)
答案 1 :(得分:0)
您可以查看使用Zend_Paginator控件。它适用于简单的数组,以及许多其他东西。它甚至可以让您轻松访问上一页/下一页信息。