gpt4 book ai didi

php - 如何循环访问多个日期数组并合并相同日期的值

转载 作者:行者123 更新时间:2023-11-29 16:09:29 25 4
gpt4 key购买 nike

我有一个输出以下字符串的数组: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

现在我想查找相同的日期,并将每一天的所有时间值添加到一个时间字符串中。

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

$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
*/

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

2019-03-04 00:00:00

01:05:00

2019-03-05 00:00:00

00:45:00

最佳答案

我使用您提供的值获取了一个静态数组。

因此,您需要将其转换才能使用它。

我们可以简单地采用一个多维数组。

键是日期,子数组应包含相应的时间。

为了从字符串中获取日期和时间,我们将使用 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

关于php - 如何循环访问多个日期数组并合并相同日期的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55395011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com