亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 429 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號