这让我发疯了。而我想要做的是计算用户在某个部门停留的秒数,例如8号部门。
我有这个数组:
$time = array(
'91' => array(
'100' => array(
'2014/05/28 00:23:26' =>array(
'id' =>'15',
'time' => '2014/05/28 00:23:26',
'dept' => '8'
),
'2014/05/28 00:25:51' =>array(
'id' =>'15',
'time' => '2014/05/28 00:25:51',
'dept' => '8'
),
'2014/05/28 00:27:45' =>array(
'id' =>'15',
'time' => '2014/05/28 00:27:45',
'dept' => '9'
),
'2014/05/28 00:28:01' =>array(
'id' =>'15',
'time' => '2014/05/28 00:28:01',
'dept' => '8'
),
'2014/05/28 00:30:46' =>array(
'id' =>'15',
'time' => '2014/05/28 00:30:46',
'dept' => '4'
)
)
)
);
解释是:
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'
);
到目前为止,我所做的代码是:https://eval.in/591599 我得到了一些错误的结果。请帮帮我。
答案 0 :(得分:1)
您可以使用this answer的变体,它适用于关联数组,就像您在这里一样:
foreach($time as $arr) {
foreach($arr as $visits) {
$visits = array_values($visits); // convert to indexed array
foreach($visits as $i => $visit) {
if ($i == count($visits)-1) break;
$dept = $visit['dept'];
$results[$dept] = (isset($results[$dept]) ? $results[$dept] : 0) +
strtotime($visits[$i+1]['time']) - strtotime($visit['time']);
}
}
}
$results
是:
Array
(
[8] => 424
[9] => 16
)
上查看它