计算平面数组中每个时间值之间的差异

问题描述 投票:0回答:1

我在循环数组并将每个值与下一个值进行比较时遇到问题。目前我的函数可以工作,但它只比较两个一组的值。例如,如果在“开始”值中我有:

凌晨 1:05 凌晨 1:10 凌晨 1:30 凌晨 1:35

我会得到以下结果: 5分钟(1:05至1:10之间的时间)和 5分钟(1:30到1:35之间的时间)

但是我错过了 1:10 到 1:30 之间的时间。下一个循环将给出接下来两个值之间的时间,忽略 1:35 和下一个值之间的时间。 该函数适用于使用数据列表的 silverstripe,但模式应该与任何数组相同?将不胜感激任何见解。

 function timeCount()
{
    $times = $this->Meetings()->sort('Start');
    $lastTime = null;

    foreach ($times as $time) {
        if ($lastTime == null) {
            $lastTime = $time;
            continue;
        }

        $time = strtotime($time->Start);
        $lastTime = strtotime($lastTime->Start);

        //For debugging
        $diff = round(abs($time - $lastTime) / 60, 2) . " minute | ";

        $lastTime = null;

        var_dump($diff);
    }
}
php arrays time difference
1个回答
1
投票

当你这样做时

    $lastTime = null;

这将导致循环的下一次迭代认为它是第一次,因此您将跳过每一个第二次比较。

function timeCount()
{
    $times = $this->Meetings()->sort('Start');
    $lastTime = null;

    foreach ($times as $time) {
        if ($lastTime == null) {
            $lastTime = $time;
            continue;
        }

        $timeVal = strtotime($time->Start);
        $lastTimeVal = strtotime($lastTime->Start);

        //For debugging
        $diff = round(abs($timeVal - $lastTimeVal) / 60, 2) . " minute | ";

        $lastTime = $time;

        var_dump($diff);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.