Php 如何在页数之间隐藏一些页码,并保留前3个页码和最后一个页码

Php 如何在页数之间隐藏一些页码,并保留前3个页码和最后一个页码,php,wordpress,pagination,Php,Wordpress,Pagination,下面的php代码结果分页为1、2、3、4、5、6 我想得到的结果是1,2,3,十, if ( is_array( $pages ) ) { $paged = ( get_query_var( 'paged' ) == 0 ) ? 1 : get_query_var( 'paged' ); echo '<ul class="page-numbers nav-pagination links text-center">';

下面的php代码结果分页为1、2、3、4、5、6

我想得到的结果是1,2,3,十,

    if ( is_array( $pages ) ) {
        $paged = ( get_query_var( 'paged' ) == 0 ) ? 1 : get_query_var( 'paged' );
        echo '<ul class="page-numbers nav-pagination links text-center">';
        foreach ( $pages as $page ) {
            $page = str_replace( 'page-numbers', 'page-number', $page );
            echo '<li>' . $page . '</li>';
        }
        echo '</ul>';
    }
?>
if(is_数组($pages)){
$paged=(get_query_var('paged')==0)?1:get_query_var('paged');
echo'
    ; foreach($页为$页){ $page=str_replace(‘页码’、‘页码’、$page); 回显“
  • ”.$page.“
  • ”; } 回声“
”; } ?>
我想和大家分享一个例子

if(is_数组($pages)){
$paged=(get_query_var('paged')==0)?1:get_query_var('paged');
echo'
    ; $i='0'; foreach($页为$页){ $page=str_replace(‘页码’、‘页码’、$page); $i++; 如果($i==4){ 回声“…”; }其他($i<4 | |$i>(计数($pages)-3)){ 回显“
  • ”.$page.“
  • ”; } } 回声“
”; }
我认为它很好用


更正:您可以修复$i=='4',并在指定的数字后添加“…”。或者,您可以找到$pages数组的中值,并将其替换为4。

基于代码,我假设
$pages
是一个包含页码1-10的数组,您希望得到第一个
n
和列出的最后一个数字

根据用例的不同,有几种解决方案

解决方案1 如果列表总是从
1
开始,并且您可以硬编码前三个元素和省略号,并且只将最后一个页码添加到列表中:

$pages=[1,2,3,4,5,6,7,8,9,10];
$n=3;

对于($k=1;$k请阅读。我们不希望您只告诉我们您想要什么,我们还想告诉我们您迄今为止尝试了什么,以实现它。此网站不是一个代码编写服务。亲爱的梅廷,谢谢,这是工作,但您可以修改它为“i==4”?如何显示当前页面和“..”只在当前页面之后开始。因为使用当前代码,当我们在第5页时,它不会显示。谢谢
if ( is_array( $pages ) ) {

$paged = ( get_query_var( 'paged' ) == 0 ) ? 1 : get_query_var( 'paged' );

echo '<ul class="page-numbers nav-pagination links text-center">';

$i = '0';

foreach ( $pages as $page ) {

$page = str_replace( 'page-numbers', 'page-number', $page );

    $i++;

    if($i == 4){

        echo '...';

    } elseif($i < 4 || $i > (count($pages) -3)){

        echo '<li>' . $page . '</li>';

    }

}

echo '</ul>';

}