按天分表后查询分页(查询表计算方法)

/**
* 分页计算方法
* @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也不美观 , 直接放弃了
按天分表后查询分页(查询表计算方法)_第1张图片
欢迎各位大牛指正或交流更好的实现方法

你可能感兴趣的:(PHP学习收集)