用于隐藏循环分页号

时间:2018-07-18 21:31:28

标签: php for-loop

所以我有这样的循环

 <?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 还是更好的东西,我无法弄清楚该怎么办

1 个答案:

答案 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

https://3v4l.org/doZbI


如果要保留在循环中,则可以使用两个循环和一个可选回显。

$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> ';
}

https://3v4l.org/1P0W3