2015-08-19 82 views
0

我现在有被格式化这样array($time,$time,$time,$time,$time, $time)其中$time是格式化的,像这样m:ss:MM一个字符串数组,其中m =分钟,s =秒和M =毫秒。PHP发现在几分钟内秒毫秒的平均时间

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

将每个字符串转换成时间戳
遍历数组并调用的平均功能或做数学计算(不知道它如何与UNIX时间戳的作品)。

感谢您的帮助

+0

,我相信也没有神奇的功能在PHP为。你必须写一些东西来总结所有的值,然后除以元素的数量。您可以通过输入两个值并分解时间,合计值,验证(例如秒数大于60,可以将其变成额外的小时)来创建函数,然后您可以按照元素的数量,所以你可以终于有平均时间。 –

+0

@MatheusLoureiro你能告诉我那个代码吗?我是网页开发的新手。谢谢。如果它起作用,我会连根拔起并标记为已回答。 – iProgram

+0

我刚刚添加了一个答案,因为它不适合作为评论。 –

回答

1

我相信这里没有PHP的神奇功能。你必须写一些东西来总结所有的值,然后除以元素的数量。您可以通过输入两个值并分解时间,合计值,验证(如秒数大于60,您可以将其变为额外的分钟)来创建函数,然后您可以按照元素的数量,所以你可以终于有平均时间。

总和函数将是这样的:

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); 


} 
+0

我如何得到它做无限量的参数?该函数最少需要14次,最大为17次。 – iProgram

+0

您必须在数组中使用'foreach'来对所有值进行求和,然后除以array_count()可获得的值的数量'功能。 –

+0

FWIW,你可以简单地在foreach循环之前以'$ result = '00:00:00';'变量开始,然后在循环中使用'$ result = sumTime($ result,$ timeOfThisLoop);'进行操作。循环结束后,您将在'$ result'变量中获得最终的总和。基本上,你还必须创建一个函数,它基于我写的你可能想调用'divideTime()'的算法,并得到像'$ average = divideTime($ result,$ numberOfElements)'这样的平均值。 –

相关问题