PHP数组分页方法


PHP数组分页

/*
  * 数组分页
  * $arr         php 数组
  * $rowsPerPage 每页显示的数量
  * $url         页面地址
  * $curPage     当前页
  * return       $ret 结果数组,直接放在前端循环输出; $pageNumString 处理的分页,直接放在前端使用
  * ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201026140440860.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW95YW55YW5saA==,size_16,color_FFFFFF,t_70#pic_center)

  */
  public static function arrayPage($arr, $rowsPerPage, $url, $curPage = 1, $param = 'curpage')
  {
      // 数组总数
      $totalPage = count($arr);

      // 首页
      $begin     = ($curPage - 1) * $rowsPerPage;

      // 每页显示的记录
      $ret       = array_slice($arr, $begin, $rowsPerPage);

      // 总页数
      $totalPage = ceil($totalPage / $rowsPerPage);

      // 存储页面字符串
      $pageNumString = '';

      if ($curPage <= 5) {
          $begin = 1;
          $end = $totalPage >= 10 ? 10 : $totalPage;
      } else {
          $end = $curPage + 5 > $totalPage ? $totalPage : $curPage + 5;
          $begin = $end - 9 <= 1 ? 1 : $end - 9;
      }

      // 上一页
      $prev = $curPage - 1 <= 1 ? 1: $curPage - 1;
      $pageNumString .= "<li><a href='$url?$param=1'>首页</a></li>";
      $pageNumString .= "<li><a href='$url?$param=$prev'>&laquo;</a></li>";

      //根据起始页与终止页将当前页面的页码显示出来
      for ($i = $begin; $i <= $end;$i ++) {
          //使用if实现高亮显示当前点击的页码
          //这是 bootstrap的全局样式
          if ($curPage == $i) {
              $pageNumString .= "<li class='active'><a href='$url?$param=$i'>$i</a></li>";
          } else {
              $pageNumString .= "<li><a href='$url?$param=$i'>$i</a></li>";
          }
      }

      //实现下一页
      $next = $curPage + 1 >= $totalPage ? $totalPage : $curPage + 1;
      $pageNumString .= "<li><a href='$url?$param=$next'>&raquo;</a></li>";
      $pageNumString .= "<li><a href='$url?$param=$totalPage'>尾页</a></li>";

      return ['ret' => $ret, 'pageNumString' => $pageNumString];
  }


0 0
讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
帮助