我有如下数组:
array
(
[0] => 505:25:32
[1] => 480:00:01
[2] => 504:00:01
[3] => 480:00:02
)
我想添加它并获得h:i:s
的总时间。我想过把这个数组分成三个
hour_array(
[0] => 505
[1] => 480
[2] => 504
[3] => 480
)
min_array(
[0] => 25
[1] => 00
[2] => 00
[3] => 00
)
sec_array(
[0] =>32
[1] => 01
[2] => 01
[3] => 02
)
然后单独添加每个数组,稍后再做它们的总和。 但这个解决方案看起来有点冗长,还有另一个解决方案
答案 0 :(得分:1)
<?php
$original_array = array
(
'505:25:32',
'480:00:01',
'504:00:01',
'480:00:02'
);
$hours=0;
$minutes=0;
$seconds=0;
foreach($original_array AS $value){
$chunks= explode(":", $value);
$hours += $chunks[0];
$minutes += $chunks[1];
$seconds += $chunks[2];
}
$minutes += floor($seconds / 60);
$seconds %= 60;
$hours += floor($minutes /60);
$minutes %= 60;
var_dump(get_defined_vars());
?>
答案 1 :(得分:0)
如果你要解析字符串,那么你可以添加到总数中,如下所示:
$totalHours = 0;
$totalMinutes = 0;
$totalSeconds = 0;
for($i = 0; $i < count($times); $i++)
{
$parsedTime = FunctionToParseStringIntoTime($times[$i]);
$totalHours += $parsedTime['hours'];
$totalMinutes += $parsedTime['minutes'];
$totalSeconds += $parsedTime['seconds'];
}
我最近一直在使用这里的功能Convert time to seconds
这将为您提供总分钟数。为了使它给出一个关联数组,我会这样做:
function FunctionToParseStringIntoTime($theTime)
{
$t = explode(':', $theTime);
return array("hours" => intval($t[0]), "minutes" => intval($t[1]), "seconds" => intval($t[2]));
}
答案 2 :(得分:0)
在原始数组中使用
$hours= array();
$min= array();
$sec= array();
foreach($original_array AS $key=> $value){
$chunk= explode(":", $value);
$hour[$key]= $chunk[0];
$min[$key]= $chunk[1];
$sec[$key]= $chunk[2];
}
答案 3 :(得分:0)
尝试使用多维数组。
这应该使您的工作变得简单并且代码更具可读性。
您只能在显示屏上添加“:”。