gpt4 book ai didi

php - 如何在数组的开头和结尾添加缺失的日期?

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

我有一个 SQL 查询,它正在查询特定日期的数据。例如在 01.01.201820.01.2018 之间。但如果某些日期没有任何数据,例如 01.01.201802.01.201819.01.201820.01.2018 我的 SQL 查询不会返回这些日期。从 03.01.201818.01.2018 只会有一个 SQL 返回。

我的问题来了。即使我的日期的开头和结尾没有数据,我仍然想将这些日期添加到数组中并为日期添加 0。因此,用户仍然知道“好吧,01.01.201802.01.201819.01.2018 上没有任何数据,并且2018年1月20日

但是我该怎么做呢?以下是我拥有的数据以及我通过 SQL 查询获取的数据的示例

$fromDate = '01.01.2018';
$toDate = '20.01.2018';

returned would be 2 columns with those data:

03.01.2018 - 5
04.01.2018 - 2
06.01.2018 - 8
07.01.2018 - 6
08.01.2018 - 10
09.01.2018 - 1
10.01.2018 - 6
13.01.2018 - 7
14.01.2018 - 2
16.01.2018 - 5
17.01.2018 - 7
18.01.2018 - 1

数据数组包含日期,点击数组包含该日期的点击次数。两个数组的顺序非常重要,因为例如键 5 返回 datas 数组的日期以及 clicks 数组中该日期的点击量。

我已经知道如何填补日期之间的空白。但我只是不知道如何填补 SQL 查询的开始日期和第一个返回日期以及 SQL 查询的最后日期和最后返回日期之间的空白。

这是我的代码,用于填补第一个日期和最后一个日期之间的空白。例如,因为 SQL 查询未返回 05.01.201811.01.201812.01.201815.01.2018,这些日期将添加到数据数组和点击数组(点击数组为 0)。

但正如我已经问过的,我怎样才能对 SQL 查询的开始日期和第一个返回日期以及 SQL 查询的最后日期和最后返回日期执行此操作?

        // assume the first element is right
$fixed_data = array($data[0]);
$fixed_clicks = array($clicks[0]);

for ($i = 1; $i < count($data); $i++) {

echo "Going through " . $data[$i] . "\n";

// if there is a gap, fill it (add 0s to corresponding array)
while (date('d.m.Y', strtotime(end($fixed_data) . ' + 1 day')) != $data[$i]) {
$fixed_data[] = date('d.m.Y', strtotime(end($fixed_data) . ' + 1 day'));
$fixed_clicks[] = 0;

echo "Added " . date('d.m.Y', strtotime(end($fixed_data) . ' + 1 day')) . "\n";
}

// add the data which exists after gap
$fixed_data[] = $data[$i];
$fixed_clicks[] = $clicks[$i];
}

foreach ($fixed_data as $key => $var) {
$fixed_data[$key] = (string)$var;
}

foreach ($fixed_clicks as $key => $var) {
$fixed_clicks[$key] = (string)$var;
}

$leadsArray[] = array(array("daten" => $fixed_data), array("anzahl" => $fixed_clicks));
var_dump($leadsArray);

最佳答案

为什么不将开始日期添加到数组的开头,将最后日期添加到数组的末尾?

//Add beginning date
array_unshift($data, $fromDate); //'01.01.2018'
array_unshift($clicks, 0);

//Add last date
array_push($data, $toDate); //'20.01.2018'
array_push($clicks, 0);

循环应该处理其余的事情。

关于php - 如何在数组的开头和结尾添加缺失的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48939620/

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