如何遍历多个日期数组并组合相同日期的值

时间:2019-03-28 10:14:04

标签: php mysql

我有一个Array,其输出为以下字符串:Date(Datetime)Duration(Time)。同一天有多个不同的时间。

例如:

2019-03-04 00:00:00 |
 01:00:00

2019-03-04 00:00:00 | 
 00:05:00

2019-03-05 00:00:00 | 
 00:30:00

2019-03-05 00:00:00 | 
 00:15:00

现在,我要查找同一天,并将每天的所有Time Values添加到一个Time String中。

我的代码看起来像这样(简化):

$sql_query = "SELECT date, time_in_minutes FROM user;
$result_sql = $db->query($sql_query);

while($sql_query = $result_sql->fetchrow(DB_FETCHMODE_ASSOC)) 
    {   
        echo $row_employee_data['date'];
        echo "<br/>";
        echo $row_employee_data['time_in_minutes'];
        echo "<br/>";
        echo "<br/>";

    }   

/*
Output: 
    2019-03-05 00:00:00

    00:15:00
*/

预期输出应该是一个多维数组,该数组将输出所有Dates一次,另一个值与持续时间Time相加。例如:

2019-03-04 00:00:00

01:05:00

2019-03-05 00:00:00

00:45:00

1 个答案:

答案 0 :(得分:0)

我已将您提供的值作为静态数组。

因此,您需要对其进行转换以使用它。

我们可以简单地获取一个多维数组。

键将是日期,子数组应包含各自的时间。

要从字符串中获取日期和时间,我们将使用php substr()函数。

以下是代码:

<?php
$dates = [];
$dates[] = '2019-03-04 00:00:00 | 01:00:00';
$dates[] = '2019-03-04 00:00:00 | 00:05:00';
$dates[] = '2019-03-05 00:00:00 | 00:30:00';
$dates[] = '2019-03-05 00:00:00 | 00:15:00';
$output = [];
if (! empty($dates)) {
 foreach ($dates as $date) {
  $temp = explode(' | ', substr($date, 11));
  $output[substr($date, 0, 10)][] = $temp;
 }
}
if (! empty($output)) {
 foreach ($output as $date => $time) {
   echo "<br/>" . $date;
   if (! empty($time)) {
      foreach ($time as $timeVal) {
        if (! empty($timeVal)) {
          foreach ($timeVal as $final) {
           echo "<br/>--" . $final;
              }
            }
      }
    }
    echo "<hr/>";
 }
}
?>

和输出:

2019-03-04
--00:00:00
--01:00:00
--00:00:00
--00:05:00
2019-03-05
--00:00:00
--00:30:00
--00:00:00
--00:15:00