PHP中对数组进行分页处理的原理及分页实例

最近用到了用数组数据分页,所以就整理了一下,希望能对大家有用!

<?php

class PaginationArray{
 
 public $pageArray=array(); //数组
 public $pageSize=10; //每页显示记录数
 public $current= 1; //当前页
 
 private $total=0; //总页数
 private $prev=0; //上一页
 private $next=0; //下一页
 
 public $argumetsOther='';//设置参数
 
 function __construct($array=array(),$pageSize=10,$current=1){
  
  $this->pageArray=$array;
  $this->pageSize=$pageSize;
  $this->current=$current; 
 }
 
 /*通过数组进行初始化
  * 
  * 数组为关联数组,参数索引为pageArray,pageSize,current
  * 
  */
 function setArguments($arr){
  if (is_array($arr)){
   $this->pageArray=$arr['pageArray'];
   $this->pageSize=$arr['pageSize'];
   $this->current=$arr['current'];
  }else{
   return ;
  }
 }
 
 //返回链接
 function page(){
  $_return=array();
  /*calculator*/
  $this->total=ceil(Count($this->pageArray)/$this->pageSize);
  $this->prev=(($this->current-1)<= 0 ? "1":($this->current-1));
  $this->next=(($this->current+1)>=$this->total ? $this->total:$this->current+1);
  
  $current=($this->current>($this->total)?($this->total):$this->current);
  
  $start=($this->current-1)*$this->pageSize;
  $arrleng=count($this->pageArray);
  
  for($i=$start;$i<($start+$this->pageSize);$i++){
   if($i >= $arrleng)break;
   array_push($_return,$this->pageArray[$i]);
  }
  $pagearray["source"]=$_return;
  $pagearray["links"]=$this->linkStyle(2);
  return $pagearray;
 }
 
 
 //链接的样式
 private function linkStyle($number=1){
  $linkStyle='';
  switch ($number){
   case 1:
    $linkStyle="<a href=\"?page=1\">first</a> <a href=\"?page={$this->prev}\">prev</a> <a href=\"?page={$this->next}\">next</a> <a href=\"?page={$this->total}\">end</a>";
    break;
   case 2:
    $linkStyle="<a href=\"?page=1&{$this->argumetsOther}\">首页</a> <a href=\"?page={$this->prev}&{$this->argumetsOther}\">上一页</a> <a href=\"?page={$this->next}&{$this->argumetsOther}\">下一页</a> <a href=\"?page={$this->total}&{$this->argumetsOther}\">尾页</a>";
    break;
  }
  return $linkStyle;
 }
 
}

//调用的实例
/*
header('Content-Type: text/html;charset=utf-8');
$array=array("1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20");
$page=  isset($_GET['page'])? $_GET['page'] : 1 ;

$arrayPage = new PaginationArray($array,"5",$page);
$r = $arrayPage->page();
foreach($r["source"] as $s){
 echo $s.'<br />';
}

echo $r["links"];

*/

?>

PHP中对数组进行分页处理的原理及分页实例相关推荐

  1. XPO分页问题——明明已经做分页为什么加载数据那么慢

    问题描述: 数据分页是做统计优化效率的最佳方式.但是XPO框架做的分页还是查询速度很慢,这是为什么? 问题原因: 做分页的逻辑原理--做分页必须有以下三个条件才可以做到分页: 总页数 当前页数 当前页 ...

  2. Vue 数组嵌套中循环数组改变值未响应

    Vue中数组的动态替换和变更存在不及时相应的问题,根据官网给的方法可以解决 vm.$set(vm.items, indexOfItem, newValue) 项目开发中碰到了,数组循环数组,遍历展示数 ...

  3. c语言中字符串数组的地址存放以及%s输出单个字符导致程序崩溃的问题

    代码 总结下c语言中字符串数组的地址存放问题 #include <iostream> using namespace std; #include<bits/stdc++.h>i ...

  4. 关于C语言中的数组指针、指针数组以及二级指针

    概念解释 数组指针:首先它是一个指针,它指向一个数组,即指向数组的指针:在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道.数组指针指向的是数组中的一个具体元素,而不是整个数组,所 ...

  5. php如何对数组进行分组,如何在PHP中对数组进行分组排序

    如何在PHP中对数组进行分组排序 发布时间:2021-01-04 16:28:51 来源:亿速云 阅读:98 作者:Leah 这篇文章将为大家详细讲解有关如何在PHP中对数组进行分组排序,文章内容质量 ...

  6. shell中的函数shell中的数组告警系统需求分析

    2019独角兽企业重金招聘Python工程师标准>>> 20.16/20.17 shell中的函数 函数的概念 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用 ...

  7. 简要叙述matlab的含义,1,简述MATLAB组成部分? 2,说明使用M文件编辑/调试器的方法和优点? 3,存储在工作空间中的数组能编辑吗...

    匿名用户 1级 2012-05-17 回答 我也考这个....祝你好运 1,简述MATLAB组成部分? (1)开发环境(development Environment); (2)MATLAB数学函数库 ...

  8. c#sort升序还是降序_C#中对数组或集合进行升序或降序排序

    在.net framework中,数组和集合都实现了用于排序的方法sort(),数组通过调用Array.Sort(数组名)排序,集合通过调用 集合对象.Sort()方法排序. 默认的排序是使用升序排列 ...

  9. php数组重复值销毁,如何从PHP中删除数组中的重复值

    如何从PHP中删除数组中的重复值 如何从PHP中删除数组中的重复值? 21个解决方案 204 votes 使用array_unique(). 例: $array = array(1, 2, 2, 3) ...

最新文章

  1. 清华开源 Jittor:首个国内高校自研深度学习框架,一键转换 PyTorch
  2. 生产环境:Nginx高可用方案
  3. 一个jsp内嵌一个jsp
  4. 大数据分析决策平台问题总结
  5. 笔记:面试 - Vue
  6. matlab做TSP,基于matlab TSP问题遗传算法的实现
  7. 案例实作图解.Net Entity Framework 教程
  8. 春节档社交与音视频大战背后,底层技术近况如何?
  9. PHP获取今天, 本周 ,半月 ,本月 ,本季 ,本年,昨天 ,上月时间段
  10. php提交后清楚表单缓存,PHP提交表单后如何控制缓存 | 学步园
  11. Link-Cut Tree
  12. python中的分号
  13. apple quicktime怎么在ppt中用_PPT情感专题大赏No. 007:一份这就是街舞第三季主题PPT(上集)...
  14. BZOJ.3648.寝室管理(点分治 树状数组)
  15. cad填充图案乱理石_CAD填充图案文件在哪个文件夹里?
  16. el-menu菜单下划线解决办法
  17. 领导力21法则 非常不错
  18. 小网站云服务器配置推荐,小网站云服务器配置推荐
  19. Spring的AOP切面编程
  20. html输入框自动对齐,html如何设置文本框对齐

热门文章

  1. mysql binary模式_MySQL数据库之MySQL的binary类型操作
  2. CSS进阶(二)——特性
  3. 看看async,await 是如何简化异步的调用WCF!
  4. AxonFramework,存储库
  5. Cray:XC50提供了最高密度的性能
  6. 解决dom4j java.lang.NoClassDefFoundError: org/jaxen/JaxenException
  7. Java反射异常:java.lang.NoSuchFieldException
  8. 适用于各种连锁企业15寸多点触摸android收款机消费机pos机
  9. Visual C++ 2008入门经典 第四章数组 字符串(练习题)
  10. hibernate update sql