从数组计算总时数-PHP [英] Calculate total hours from Array - php

查看:61
本文介绍了从数组计算总时数-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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆