所以我有这样的循环
<?php for($i = 0; $i <$size; $i++) { ?>
<li>
<a pagenumber="<?php $i+1?>" class="pagination" href="#"><?php $i+1?></a></li>
<?php } ?>
所以有点像这样:
1 2 3 4 5 6 7 8
但是这里的问题是,当说100页时,有很多数字,我该怎么做呢
1 2 3 4 5 .... 98 99 100
并且没有从1到100的数字一直显示
所以例如当我单击5时它应该显示
6 7 8 9...98 99 100
还是更好的东西,我无法弄清楚该怎么办
答案 0 :(得分:2)
您不需要循环。
您可以使用array_slice和implode获得预期的输出。
我添加了$ n,如果不是所选的第1页,则可以选择输出到所选内容之前的一页。
$pages = range(1,100); // range(1, $size);
$page = 1; // page selected by user
if($page ==1){
$n = 0;
}else{
$n = 1;
}
echo implode(" ", array_slice($pages, $page-1-$n, 5)) . " . . . . " . Implode(" ", array_slice($pages, -3));
输出:
1 2 3 4 5 . . . . 98 99 100
选择第5页:
4 5 6 7 8 . . . . 98 99 100
$size =100;
$page = 5;
// Echo one page prior to selected page
if($page != 1){
Echo '<a pagenumber="' . ($page-1) .'" class="pagination" href="#">' . ($page-1) . '</a></li>';
Echo ' . '; // show dot for current page
}
// Echo +1 -> +5
For($i = $page+1; $i < $page+6; $i++){
Echo '<a pagenumber="' . $i .'" class="pagination" href="#">' . $i . '</a></li> ';
}
Echo '. . . . ';
// Echo last three pages
For($i = $size-3; $i <= $size; $i++){
Echo '<a pagenumber="' . $i .'" class="pagination" href="#">' . $i . '</a></li> ';
}