/**
* 分页计算方法
* @param totalNum符合条件的各个表数据数据条数∗∗totalNum 要求格式Array ( [0] => Array ( [0] => 20170922 [1] => 28 ) [1] => Array ( [0] => 20170921 [1] => 1 ) [2] => Array ( [0] => 20170920 [1] => 11 ) )
* @param $page 当前第几页
* @return array
*/
private function tableCount( $totalNum,$page){
$prevNum = ($page-1) * 15; //之前页面条数
$nowNum = $i = 0;
$resArr = array();
$arrNum = count($totalNum);
foreach($totalNum as $key => $value){
$nowNum += $value[1]; //当前总条数
//大于上页数据则为当前页需要显示数据
if($nowNum > $prevNum){
if($resArr){
$alyNum = 0;
foreach($resArr as $k => $v){
$nArr = explode(",",$v['nums']);
$alyNum += $nArr[1];
}
$offset = $value[1]-($nowNum - $prevNum)+$alyNum;
$pagesize = ((15-$alyNum) < $value[1]) ? (15-$alyNum) : $value[1];
}else{
$offset = $value[1]-($nowNum - $prevNum);
$pagesize = ($nowNum - $prevNum > 15) ? 15 : ($nowNum - $prevNum);
}
$resArr[$key]['dates'] = $value[0];
$resArr[$key]['nums'] = $offset.",".$pagesize;
}
$i++; //满足最后一页查询不足15条
//足够当前页显示则返回
if($pagesize == 15 || $i == $arrNum){
return $resArr;
}
}
}
返回格式(跨表后会有多个值):
Array
(
[0] => Array
(
[dates] => 20170922 //表名
[nums] => 0,15 //$offset,$pagesize
)
)
网上也是看了徐版主的思路写的,下边附上徐版主的思路截图,网上还有很多说利用union和关联表查询的方法,感觉这些方法会很慢,而且当查询的表多了sql也不美观 , 直接放弃了
欢迎各位大牛指正或交流更好的实现方法