我有一个数组变量,我一直存储在这个数组中。 我想要计算我的数组中的所有存储值。 我尝试使用for循环,但它无法读取时间格式。
我正在使用CakePHP
在我的usercontroller中:
$this->set('project_time',$sele_lang['time']);
我使用该代码来获取每个项目的估计时间。 我对此没有任何问题。
然后在我的PHP中获取设定时间 我创建了一个变量和数组来存储时间。
$ target_time和$ stored_time = array()
if(i have two projects) //i assume that i have two project
for($i = 0; $i < count($lang_val); $i++)
{
$target_time = $project_time; // this will get the estimated time
$stored_time[] = $target_time; //this will store the time in array.
$tempo = date("H:i:s", strtotime($stored_time[$i])); //this will get the first array value.
}
我在这里堆积。
我不知道是否有一个功能可以总结存储在我的阵列中的所有时间。 要么 我想,如果我将第一个值存储到一个临时文件,然后将临时值添加到数组的第二个值,这将给出我想要的结果但是基于时间我只尝试了一个整数
感谢您的进步。抱歉我的第一篇文章中缺少信息。
答案 0 :(得分:0)
这样的东西?你的代码没有意义,这是我最好的解释。 (这是一种不好的方式。我们可以合并第一个循环。
for($i=0;$i<count($lang_val);$i++){
$target_time = $project_time;
$stored_time[] = $target_time; //Assuming this is a timestamp
}
$intTotalTime = 0;
foreach($stored_time as $intTimeStamp) {
$intTotalTime += $intTimeStamp;
}
echo "Total Time: ". date("H:i:s", strtotime($intTotalTime));
答案 1 :(得分:0)
为什么要获得时间戳的总和?结果将是一个非常奇怪的数字。
我假设$ lang_val是一个带时间戳的数组。
$new = array();
foreach( $lang_val as $entry ) {
$new[] = strtotime( $entry );
}
// Debugging
var_dump( $new );
// Actual value
var_dump( array_sum($new) );
或
$total = 0;
foreach( $lang_val as $entry ) {
$total += strtotime( $entry );
}
发表评论后:
$data = array(
'00:15:00',
'01:05:05',
'10:00:15'
);
$total = 0;
foreach( $data as $timestamp ) {
// Get values or set default if not present.
list( $hours, $minutes, $seconds ) = explode( ':', $data ) + array(
0 => 0,
1 => 0,
2 => 0
);
// Convert to seconds
$hours = $hours * 3600;
$minutes = $minutes * 60;
$total += $hours + $minutes + $seconds;
}
var_dump( $total );
答案 2 :(得分:0)
您可以使用array_reduce
和strtotime
:
<?php
$array = array('00:10:15', '02:00:00', '05:30:00');
// Get total amount of seconds
$seconds = array_reduce($array, function($carry, $timestamp) {
return $carry + strtotime('1970-01-01 ' . $timestamp);
}, 0);
// Get hours
$hours = floor($seconds/ 3600);
$seconds -= $hours * 3600;
// Get minutes
$minutes = floor($seconds/ 60);
$seconds -= $minutes * 60;
// Convert to timestamp
$timestamp = sprintf('%02d:%02d:%02d', $hours, $minutes, $seconds);
var_dump($timestamp); //string(8) "07:40:15"