【问题标题】:php find average time in minutes seconds millisecondsphp以分钟秒毫秒为单位查找平均时间
【发布时间】:2015-08-19 17:03:07
【问题描述】:

我目前有一个格式为array($time,$time,$time,$time,$time, $time) 的数组,其中$time 是格式为m:ss:MM 的字符串,其中m=分钟、s=秒和M=毫秒。

我该怎么做?
我对如何做到这一点有一个粗略的想法:

将每个字符串转换为时间戳
遍历数组并调用平均函数或进行数学计算(不确定它如何与 unix 时间戳一起使用)。

感谢您的帮助

【问题讨论】:

  • 我相信 PHP 中没有任何神奇的功能。你必须写一些东西来总结所有的值,然后除以元素的数量。您可以为此创建一个函数,方法是输入两个值并分解时间,对值求和,验证(例如,如果秒大于 60,您可以将其变为额外的小时),然后您可以执行相同的操作来除以元素的数量,因此您最终可以获得平均时间。
  • @MatheusLoureiro 你能给我看一下代码吗?我是 Web 开发的新手。谢谢。如果可行,我将连根拔起并标记为已回答。
  • 我刚刚添加了一个答案,因为它不适合作为评论。
  • 看看my Time value class,它可以做你想做的事情,还有更多。
  • @vascowhite 这是否支持我的时间格式?它是否也以相同的格式显示输出?看起来不像。

标签: php datetime average


【解决方案1】:

我相信 PHP 中没有任何神奇的功能。你必须写一些东西来总结所有的值,然后除以元素的数量。您可以通过输入两个值并分解时间、对值求和、验证(例如,如果秒大于 60,您可以将其变为额外的分钟)来创建一个函数,然后您可以执行相同的操作来除以元素的数量,因此您最终可以获得平均时间。

sum 函数是这样的:

function sumTime($time1, $time2) {

    $time1Exp = explode(':', $time1);
    $time2Exp = explode(':', $time2);
    $timeResult = array();
    $extraMinutes = $extraSeconds = 0;

    //sum milliseconds
    $timeResult[2] = $time1Exp[2] + $time2Exp[2];

    if($timeResult[2] >= 100) {
        $extraSeconds = floor($timeResult[2] / 100);
        $timeResult[2] -= $extraSeconds * 100;
    }

    $timeResult[1] = $time1Exp[1] + $time2Exp[1] + $extraSeconds;

    if($timeResult[1] >= 60) {
        $extraMinutes = floor($timeResult[1] / 60);
        $timeResult[1] -= $extraMinutes * 100;
    }

    $timeResult[0] = $time1Exp[0] + $time2Exp[0] + $extraMinutes;

    return implode(':', $timeResult);


}

【讨论】:

  • 如何让它做无限量的参数?该函数预计最少 14 次,最多 17 次。
  • 你必须在你的数组中做一个foreach来对所有的值求和,然后除以你可以用array_count()函数得到的值的数量。
  • FWIW,您可以简单地在 foreach 循环之前从 $result = '00:00:00'; 变量开始,然后在循环中使用 $result = sumTime($result, $timeOfThisLoop);。循环结束后,您将在 $result 变量中获得最终总和。基本上,您还必须基于我编写的相同算法创建一个函数,您可能想调用divideTime() 并获得平均值,如$average = divideTime($result, $numberOfElements);
  • 抱歉,不太明白。您能否将代码放在答案中以便更容易理解?
  • @iProgram,这个网站是为了帮助人们解决他们的疑惑、问题等,而不是免费开发东西。我已经编写了您需要的代码中更复杂的部分。你必须从这里获取东西并编写你自己的代码,你有任何疑问,你可以在这里问,但我不会为你编写代码。也许你想要一个老师或一个开发者,你必须付钱才能得到它。我很抱歉。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多