0

我需要对 date_diff 函数返回的所有值求和。

我尝试使用 array_sum(),但结果为 0(因为它是空的)。结果应该是 14。

$sql = "SELECT start_date, end_date FROM events";
  $result = $conn->query($sql);
  if ($result->num_rows > 0) {

   while($row = $result->fetch_assoc()) {
     $row["start_date"];   
     $row["end_date"];
     $start = date_create($row["start_date"]);
     $end = date_create($row["end_date"]);
     $fin=date_add($end, date_interval_create_from_date_string('1 days'));

     $diff=date_diff($start, $fin);
      echo $diff->format('%d days');

}

我提供的代码有效,但是当我添加 array_sum() 时,它总是显示 0。

4

1 回答 1

1

您可以创建一个 base DateTime,并将所有内容添加date_diff到其中。然后通过减去原始基准日期时间来计算总日期差异。

$base_time = new DateTime();
$time = clone $base_time;
// begin foreach loop
...
$diff=date_diff($start, $fin);
$time->add($diff);
...
// end foreach loop
$sum_of_diff = $time->diff($base_time);

于 2019-08-07T00:22:28.113 回答