我有一个名为$ time的变量数组。而我想要做的是计算用户在某个部门停留的秒数,例如8号部门。
$time = array(
'91' => array(
'100' => array(
'0' =>array(
'id' =>'15',
'time' => '2014/05/28 00:23:26',
'dept' => '8'
),
'1' =>array(
'id' =>'15',
'time' => '2014/05/28 00:25:51',
'dept' => '8'
),
'2' =>array(
'id' =>'15',
'time' => '2014/05/28 00:27:45',
'dept' => '9'
),
'3' =>array(
'id' =>'15',
'time' => '2014/05/28 00:28:01',
'dept' => '8'
)
'4' =>array(
'id' =>'15',
'time' => '2014/05/28 00:30:46',
'dept' => '4'
)
)
);
我有下表:enter image description here
23:26到25:51有145秒的差异。
25:51到27:45有114秒的差异。
28:01到30:46有165秒的差异。
因此,如果我们添加145+ 114 + 166
。用户在该部门中停留的总秒数为424
秒。
在第9部分: 27:45到28:01有16秒的差异。
我想实现输出:
$results = array(
'8' => '424',
'9' => '16'
);
它让我发疯了。有人可以帮助我如何实现它或实现它的最佳方式。我试过了:
$timeFirst = strtotime('2016/05/26 00:27:45');
$timeSecond = strtotime('2016/05/26 00:28:01');
$differenceInSeconds = $timeSecond - $timeFirst;
print_r($differenceInSeconds);
但问题是我无法继续,因为我不知道如何继续下去。谢谢。
答案 0 :(得分:0)
这应该可以解决问题
function arr2timespent($arr){
$ret=array();
for($i=0;$i<count($arr)-1;$i++){
$startTime=strtotime($arr[$i]["time"]);
$endTime=strtotime($arr[$i+1]["time"]);
$diff=$endTime-$startTime;
$ret[$arr[$i]["dept"]]+=$diff;
}
return $ret;
}
迭代数组中的所有条目(除了最后一个)。然后它接受时间差并将其添加到 dept-th 数组条目。
此函数应调用为arr2timespent($time["91"]["100"]);
答案 1 :(得分:0)
问题是你的数组是深层嵌套的,所以你需要一些public function ajax_add()
{
$response = array(
'success' => false
) ;
$this->load->library('form_validation');
// add your validation
$this->form_validation->set_rules('PROVINCE', 'PROVINCE', 'required');
if ($this->form_validation->run() == FALSE)
{
$data = array(
'PROVINCE' => $this->input->post('PROVINCE')
);
$insert = $this->Provinces_Model->save($data);
if($insert){
$response['success'] = TRUE ;
$response['message'] = 'Record created successfully' ;
}
else{
$response['message'] = 'Unable to create record' ;
}
}
else
{
$response['message'] = 'Invalid data' ;
}
echo json_encode($response);
循环来获取细节:
.run(function ($rootScope, $location, $state, $mdToast, PhoneFactory) {
PhoneFactory.get_token().success(function (data) {
Twilio.Device.setup(data.token, { debug: true, region: "ie1" });
});
Twilio.Device.ready(function (device) {
//do stuff
});
})
foreach
是:
foreach($time as $arr) {
foreach($arr as $visits) {
foreach($visits as $i => $visit) {
if ($i == count($visits)-1) break;
$results[$visit['dept']] +=
strtotime($visits[$i+1]['time']) - strtotime($visit['time']);
}
}
}
在eval.in上看到它。