为了账号安全,请及时绑定邮箱和手机立即绑定

php 二维数组 怎么获取不同值对应的时间差

php 二维数组 怎么获取不同值对应的时间差

跃然一笑 2019-05-11 16:14:54
$arr=['0'=>['a1'=>'true','time'=>1537861731],'1'=>['a1'=>'false','time'=>1541035671],'2'=>['a1'=>'true','time'=>1541036000],'3'=>['a1'=>'true','time'=>1541036010]'4'=>['a1'=>'false','time'=>1541036020]];true:接通;false:未接通;true到false的时间是接通时间;false到true的是未接通时间;结果:想获取所有的接通时间。就是用false对应的时间戳减去前面的为true的时间戳。这个试例中的就只能用1减去0的时间,4减去2的时间。循环该怎么写,求助大神。
查看完整描述

2 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

从你这段数组上感觉你对于通话时长,这段业务处理的很奇怪(指的是数组的形成方式)。通过下面的代码应该可以得到你想要的结果:
$true_key=null;
$times=[];
foreach($arras$key=>$value){
if($value['a1']=='true'){
//记录true第一次出现时的下标
if($true_key===null){
$true_key=$key;
}
continue;
}
/**
*记录
*/
if(($value['a1']=='false')&&($true_key!==null)){
$times[]=$value['time']-$arr[$true_key]['time'];
$true_key=null;
}
}
                            
查看完整回答
反对 回复 2019-05-11
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

先把true和false拆开放在两组。然后遍历为true的一组。并同时对为false的一组进行迭代。每次迭代对游标向前推进如果当前的结束时间不为null就用结束时间减去开始时间,即为本次连接时间。
$arr=[
['a1'=>'true','time'=>1537861731],
['a1'=>'false','time'=>1541035671],
['a1'=>'true','time'=>1541036000],
['a1'=>'true','time'=>1541036010],
['a1'=>'false','time'=>1541036020]
];
$start=[];
$finish=[];
foreach($arras$item){
if($item['a1']==='true'){
array_push($start,$item);
continue;
}
array_push($finish,$item);
}
$result=array_map(function($item)use(&$finish){
$current=current($finish);
next($finish);
if($current){
return$current['time']-$item['time'];
}
},$start);
var_dump($result);
                            
查看完整回答
反对 回复 2019-05-11
  • 2 回答
  • 0 关注
  • 473 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号