php - PHP将缺少的工作日推入数组中,总数为0
问题描述
我需要为上周的每一天建立一个总销售额图表,我没有得到所有 7 天的数据,而是从数据库中获取 3 天的数据,我需要推动其余 4 天的总销售额为 0,
我有以下 3 天的数组
Array
(
[0] => Array
(
[SalesDate] => Jun09
[total] => 4
)
[1] => Array
(
[SalesDate] => Jun11
[total] => 2
)
[2] => Array
(
[SalesDate] => Jun14
[total] => 1
)
)
但我需要像这样从 Jun09 到 Jun15 的所有 7 天数据
Array
(
[0] => Array
(
[SalesDate] => Jun09
[total] => 4
)
[1] => Array
(
[SalesDate] => Jun10
[total] => 0
)
[2] => Array
(
[SalesDate] => Jun11
[total] => 2
)
[3] => Array
(
[SalesDate] => Jun12
[total] => 0
)
[4] => Array
(
[SalesDate] => Jun13
[total] => 0
)
[5] => Array
(
[SalesDate] => Jun14
[total] => 1
)
[6] => Array
(
[SalesDate] => Jun15
[total] => 0
)
)
我尝试过使用以下代码,但没有获得所需的数据。
<?php
$sales =array(array('SalesDate' => 'Jun09',
'total' => 4
),
array
(
'SalesDate' => 'Jun11',
'total' => 2
),
array
(
'SalesDate' => 'Jun14',
'total' => 1
)
);
$final_array = array();
foreach($sales as $sale)
{
for($i=7;$i>0;$i--)
{
$current_weeks =[];
if($sale['SalesDate'] ==date('Md', strtotime("-".$i." days")))
{
$week_days['SalesDate'] = $sale['SalesDate'];
$week_days['total'] = $sale['total'];
}
else
{
$week_days['SalesDate'] = date('Md', strtotime("-".$i." days"));
$week_days['total'] = 0;
}
$final_array[] =$week_days;
}
}
解决方案
您可以首先创建一个与您的源数组匹配的“骨架”数组$arr
,但与之前的所有 7 天相匹配$prevSevenDays
。日期格式与源数组匹配,总数均设置为0
.
// build empty skeleton
$prevSevenDays = [];
for ($i = 7; $i > 0; $i--) {
$prevSevenDays[$i]['SalesDate'] = date('Md', strtotime("-$i days"));
$prevSevenDays[$i]['Total'] = 0;
}
您所要做的就是循环遍历这个数组,用源数组中的可用数据替换条目$arr
。
foreach ($arr as $sales) {
foreach ($prevSevenDays as $key => $day) {
if ($sales['SalesDate'] === $day['SalesDate']) $prevSevenDays[$key]['Total'] = $sales['Total'];
}
}
推荐阅读
- python - NumPy - 获取每行的最小值并保持形状
- avro - Kafka 生产者 - 如何在不停机和保留消息顺序的情况下更改主题?
- javascript - 如何过滤 EXTJS 网格列表过滤器?
- sql-server - 在sql中使用if存在或不存在
- python - 如何将json写入pandas DataFrame?
- sql - 如何在 SQL Server 2008 中检查数字格式
- php - Laravel - 我的收件箱网络路由中的错误
- python - TensorFlow 在模型内应用操作:FailedPreconditionError
- c++ - 为什么我的 fortran 例程将不正确的值传递给我的 C++ 函数?
- r - 日志图 Rstudio 的轴