php - 如何对二维数组求和

标签 php foreach

晚上好

我有一个问题。我有两个数组:$duration_c[$k][$s]。它打印一切正常

$duration_c[0][0]="19:30:00";
$duration_c[0][1]="00:10:00";

$duration_c[1][0]="00:30:00";
$duration_c[1][1]="00:20:00";

比求和

$times=$duration_c[$k][$s];
function sum_the_time($times) {

  $seconds = 0;
  foreach ($times as $time)
  {
    list($hour,$minute,$second) = explode(':', $time);
    $seconds += $hour*3600;
    $seconds += $minute*60;
    $seconds += $second;
 }
  $hours = floor($seconds/3600);
  $seconds -= $hours*3600;
  $minutes  = floor($seconds/60);
  $seconds -= $minutes*60;
  // return "{$hours}:{$minutes}:{$seconds}";
  return sprintf('%02d:%02d:%02d', $hours, $minutes, $seconds);
} 
echo sum_the_time($times);

如何对$duration_c[0][0]+$duration_c[0][1]和$duration_c[1][0]+$duration_c[1][1]求和,以及如何打印? 出现错误为 foreach() 提供的参数无效

最佳答案

您仅向 sum_the_time 函数发送一个值,如 $times=$duration_c[$k][$s]; $times 只有一个值,您可以通过这样的写法打印并检查该函数将获得什么值

$times=$duration_c[$k][$s];
echo $times;

使用

$times=$duration_c[$k];

这样您就可以将数组发送到您的函数,并且 foreach 不会给您错误

$times=$duration_c[$k]; // contains array of times
function sum_the_time($times) {

  $seconds = 0;
  foreach ($times as $time)
  {
    list($hour,$minute,$second) = explode(':', $time);
    $seconds += $hour*3600;
    $seconds += $minute*60;
    $seconds += $second;
 }
  $hours = floor($seconds/3600);
  $seconds -= $hours*3600;
  $minutes  = floor($seconds/60);
  $seconds -= $minutes*60;
  // return "{$hours}:{$minutes}:{$seconds}";
  return sprintf('%02d:%02d:%02d', $hours, $minutes, $seconds);
} 
echo sum_the_time($times);

关于php - 如何对二维数组求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13543423/

相关文章:

php - mysql -- 奇怪的 mysql varchar 到 excel

c++ - 使用 foreach 语法进行迭代时如何检查我是否在最后一个元素上

arrays - (Perl) 尝试使用简单数组编写 foreach 语句。对格式感到困惑

php - 使用 foreach 访问数组元素

php - python的parse_str?

php - PDOException SQLSTATE[HY000] [2002] 没有这样的文件或目录

php - 获取数组的最后一个元素以从中删除逗号

带有变量的 php foreach

c# - Foreach 循环和 lambda 表达式

php - 预订可用性