一个困扰了我两天的问题,别人一个小时就搞定了,究其原因是什么呢,其实就是一个函数我不知道,但是那个函数真的很常用。
问题:一组数据,其中有时间和对应的项目名称,根据日期进行统计,将没有数据的对应日期显示在用户前端,统计数目记为0?
解决此问题的逻辑:使用php在后端解决比使用mysql在sql语句中解决方便和简单很多,
首先通过查询获取到相应的数据,将数据放入到一个数组中。
第二,通过对时间段进行循环叠加,对获取的数组进行遍历,将其中的时间字段取出来与时间段中的数据进行对比,如果不同,定义一个新的数组,将此时间段中不同的值放入到数组中,并同时给新的数组中加入统计的字段赋值为0,将新的数组加入到查询的数组中,使用array_push()函数即可,我没有做出来的主要原因。
第三,将新的数组输出即可。
代码添加了对时间进行排序的功能
$start = strtotime($result[0]['jd_info_add_time']);//$result查询生成的数组
$end = time();
for($i=$start;$i<=$end;$i+=86400)
{
$s = true;
foreach($result as $key=>$val)
{
if(in_array(date('Y-m-d',$i),$val))
{
$s = false;
}
}
if($s){
$arr['jd_info_add_time'] = date('Y-m-d',$i);
$arr['count'] = '0';
array_push($result, $arr);
}
$a[] = date('Y-m-d',$i);
}
krsort($a);
$new_data = [];
foreach($a as $t) //排序
{
foreach($result as $key=>$val)
{
if($val['jd_info_add_time'] == $t)
{
$new_data[] = $val;
}
}
}
$data['rows'] = $new_data;