从数组计算总时数-PHP [英] Calculate total hours from Array - php
问题描述
我的数组看起来像这样
Array
(
[0] => Array
(
[ltime] => 00:02:55
)
[1] => Array
(
[ltime] => 00:07:56
)
[2] => Array
(
[ltime] => 01:03:32
)
[3] => Array
(
[ltime] => 01:13:34
)
[4] => Array
(
[ltime] => 02:13:44
)
[5] => Array
(
[ltime] => 03:08:53
)
[6] => Array
(
[ltime] => 03:13:54
)
)
怎么办我从该数组计算总时数 [ltime]
。
这就是我尝试过的
how do i calculate total hours [ltime]
from this array.
This is what i have tried
$sum = 0;
foreach($arr as $shift) {
$start = explode(':', $shift[0]);
$end = explode(':', $shift[1]);
$sum += ($end[0] - $start[0]) + ($end[1] - $start[1]) / 100 / 0.6;
}
这不起作用。如何实现这一目标。
which does not work. How to achieve this.
编辑
这正是我想要的。
ltime1 is 00:02
[5 min]
ltime2 is 00:07
[56 min]
ltime3 is 01:03
[10 min]
ltime4 is 01:13
[1 hour]
ltime5 is 02:13
[55 min]
ltime6 is 03:08
[5 min]
ltime7 is 03:13
---------------------------------------
Total time 3 hours 11 minutes
这实际上是发现所有值之和的时差。
This is actually finding time difference the sum all the values.
推荐答案
数据的给定顺序为 low->高
。为了计算增加的时间,我将其设置为 reverse
,或者也可以尝试其他方法。
The given order of your data is low -> high
. For calculating increasing time I have made it reverse
or you can try other way too.
但是关键是以通用格式获取时间- unix时间戳
。我们为此使用 strtotime()
。其余的遍历计算。
But the key thing is getting the time in common format - unix timestamp
. We are using strtotime()
for this. The rest are traversing calculating.
以下代码给出了您期望的结果。
The following code gives the result you expected.
$data = array(
array('ltime' => "00:02:55"),
array('ltime' => "00:07:56"),
array('ltime' => "01:03:32"),
array('ltime' => "01:13:34"),
array('ltime' => "02:13:44"),
array('ltime' => "03:08:53"),
array('ltime' => "03:13:54")
);
$data = array_reverse($data);
$prev = 0;
$diff = strtotime("00:00:00");
array_walk($data, function($item, $key) use (&$diff, &$prev){
if ($prev == 0) {
$prev = strtotime($item['ltime']);
} else {
$diff += ($prev - strtotime($item['ltime']));
$prev = strtotime($item['ltime']);
}
});
var_dump(date("H:i:s",$diff));
这篇关于从数组计算总时数-PHP的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!