gpt4 book ai didi

php - 从数组计算总小时数 - php

转载 作者:行者123 更新时间:2023-12-04 14:35:45 26 4
gpt4 key购买 nike

我的数组看起来像这样

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]。这是我试过的

$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;
}

这是行不通的。如何实现。

编辑

这正是我想要的。

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

这实际上是求所有值的总和的时间差。

最佳答案

数据的给定顺序是low -> high。为了计算增加的​​时间,我将其设为 reverse 或者您也可以尝试其他方式。

但关键是获取通用格式的时间 - unix timestamp。为此,我们使用 strtotime()。其余为遍历计算。

以下代码给出了您预期的结果。

$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 - 从数组计算总小时数 - php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36447887/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com