时间颗粒度相关数据处理

<?php

//原始数据为颗粒度1秒数据,下面的方法里可以自定义时间颗粒度,获取处理后的数据!~

$arr1=Array (
    Array ( 'time' => 1523714540, 'pv' => 50, 'exec' => 20 ) ,
    Array ( 'time' => 1523714541, 'pv' => 40, 'exec' => 10 ) ,
    Array ( 'time' => 1523714542, 'pv' => 30, 'exec' => 30 ) ,
    Array ( 'time' => 1523714543, 'pv' => 20, 'exec' => 50 ) ,
    Array ( 'time' => 1523714544, 'pv' => 50, 'exec' => 40 ) ,
    Array ( 'time' => 1523714545, 'pv' => 10, 'exec' => 10 ) ,
    Array ( 'time' => 1523714546, 'pv' => 30, 'exec' => 20 ) ,
    Array ( 'time' => 1523714547, 'pv' => 20, 'exec' => 40 ) ,
    Array ( 'time' => 1523714548, 'pv' => 40, 'exec' => 50 ) ,
    Array ( 'time' => 1523714549, 'pv' => 10, 'exec' => 10 ) ,
    Array ( 'time' => 1523714550, 'pv' => 40, 'exec' => 20 ) ,
    Array ( 'time' => 1523714551, 'pv' => 30, 'exec' => 50 ) ,
    Array ( 'time' => 1523714552, 'pv' => 20, 'exec' => 30 ) ,
    Array ( 'time' => 1523714553, 'pv' => 40, 'exec' => 10 ) ,
    Array ( 'time' => 1523714554, 'pv' => 30, 'exec' => 50 ) ,
    Array ( 'time' => 1523714555, 'pv' => 50, 'exec' => 10 ) ,
    Array ( 'time' => 1523714556, 'pv' => 40, 'exec' => 20 ) ,
    Array ( 'time' => 1523714557, 'pv' => 30, 'exec' => 40 ) ,
    Array ( 'time' => 1523714558, 'pv' => 60, 'exec' => 30 ) ,
    Array ( 'time' => 1523714559, 'pv' => 40, 'exec' => 20 ) ,
    Array ( 'time' => 1523714560, 'pv' => 30, 'exec' => 10 ) ,
);






//获取自定义颗粒度的时间
function times($arr,$time='seconds',$num=5){
    
    $num = $num-1;
    $starttime = $arr[0]['time'];
    $endtime   = strtotime(+$num.$time,$starttime);
    foreach ($arr as $k=> $v){
    
            $in = $v['time'];
            
             if($in >= $starttime and $in < $endtime){
                      $timemap[]=$starttime.','.$endtime;
              }else{
                    $starttime = $endtime+1;
                      $endtime   = strtotime(+$num.$time,$starttime);
            }
        }
    
      $time_arr=array_unique($timemap);
    foreach ($time_arr as $k => $v){

        $arrs[] = explode(',',$v);
    
    }

    return $arrs;
}


$timemap=times($arr1,'seconds',10);
//print_r($timemap);die;

//获取结果集
function bb($timemap,$array){

    foreach ($timemap as $key => $value) {

        $starttime = $value[0];
        $endtime   = $value[1];
        $pv  ='';
        $exec='';
        
        foreach($array as $kk=>$vv){

             $mid = $vv['time'];

            if($mid >= $starttime and $mid <= $endtime) {
               $pv    += $vv['pv'];
               $exec  += $vv['exec'];
               $time   = $starttime;
              }

        }
        
         $res[]=array('time'=>$time,'pv'=>$pv,'exec'=>$exec);
    
    }
        return  $res;
}

print_r(bb($timemap,$arr1));

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭