PHP基于数组实现的分页函数实例,可作为方法使用

<?php
/**
  * 数组分页函数 核心函数 array_slice
  * 用此函数之前要先将数据库里面的所有数据按一定的顺序查询出来存入数组中
  * $count  每页多少条数据
  * $page  当前第几页
  * $array  查询出来的所有数组
  * order 0 - 不变   1- 反序
  */
function page_array( $count , $page , $array , $order ){
   global $countpage ; #定全局变量
   $page =( empty ( $page ))? '1' : $page ; #判断当前页面是否为空 如果为空就表示为第一页面
     $start =( $page -1)* $count ; #计算每次分页的开始位置    -----------------------注意减一
   if ( $order ==1){
    $array = array_reverse ( $array );
  
   $totals = count ( $array );
   $countpage = ceil ( $totals / $count ); #计算总页面
   $pagedata = array ();
  $pagedata = array_slice ( $array , $start , $count );
   return $pagedata ; #返回查询数据
}
/**
  * 分页及显示函数
  * $countpage 全局变量,照写
  * $url 当前url
  */
function show_array( $countpage , $url ){
    $page = empty ( $_GET [ 'page' ])?1: $_GET [ 'page' ];
  if ( $page > 1){
    $uppage = $page -1;
  } else {
   $uppage =1;
  }
  if ( $page < $countpage ){
    $nextpage = $page +1;
 
  } else {
    $nextpage = $countpage ;
  }
     $str = '<div style="border:1px; width:300px; height:30px; color:#9999CC">' ;
  $str .= "<span>共 {$countpage} 页 / 第 {$page} 页</span>" ;
  $str .= "<span><a href='$url?page=1'>  首页 </a></span>" ;
  $str .= "<span><a href='$url?page={$uppage}'> 上一页 </a></span>" ;
  $str .= "<span><a href='$url?page={$nextpage}'>下一页 </a></span>" ;
  $str .= "<span><a href='$url?page={$countpage}'>尾页 </a></span>" ;
  $str .= '</div>' ;
  return $str ;
}

//如果是作为类使用,把全局变量$countpage拿出来作为一个方法来获取即可

另附一个CI中使用数组来分页的方法
         $array = $this->search->index($keyword,$index);  //数据为从sphinx中得来
        // var_dump($array);
        $res_rows = is_array($array) ? count($array) : 0;


        $pinfo = $this->uri->uri_to_assoc(3); //获取地址栏中page的信息
        $page = (isset($pinfo['page']) && $pinfo['page']!='') ? $pinfo['page'] : 1;

        $url = $_SERVER['HTTP_HOST'];
        // var_dump($url);die;
        $this->load->library('pagination');
        $config['base_url'] = 'http://'.$url.'/search/index/page';
        $config['total_rows'] = $res_rows;
        $config['per_page'] = 2;
        $config['num_links'] = 3;//页码连接数
        $config['use_page_numbers']  = TRUE;
        $config['reuse_query_string'] = TRUE ;
        // $config['page_query_string'] = TRUE;
        $start = ($page-1)*$config['per_page'];

        $this->pagination->initialize($config);
        $data = array_slice($array,$start,$config['per_page']);
        // var_dump($data);
        $pages = $this->pagination->create_links();

       $this->load->view('search/search-'.$view,array('data'=>$data,'count'=>$res_rows,'pages'=>$pages,'keyword'=>$keyword)); //分配变量给模板

?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值