从数据库中直接导出的文本(数据的日期范围及服务次数):
2 2003-07-19 2003-08-18
10 2004-03-22 2004-03-22
9 2005-11-05 2005-11-05
4 2006-10-01 2008-10-31
18 2007-01-01 2009-07-15
想把其中的服务次数累加到每一天上去,本来想用sql直接处理,结果没有想到什么好的方法,只好请小李写了一个脚本来处理:
<?php $file_handle = fopen("./water-time-service.txt", "r"); $arr = array(); $index = 0; while (!feof($file_handle)) { $index ++; $line = fgets($file_handle); $times = (int)mb_substr($line,0,2,"UTF-8"); $date_start = trim(mb_substr($line,2,11,"UTF-8")); $date_end = trim(mb_substr($line,13,11,"UTF-8")); $end_day = strtotime($date_end); $days = round((strtotime($date_end) - strtotime($date_start)) / (3600*24)) + 1; $_thisline = array(); for(;;) { if($days < 1) { break; } $_thisline[] = date("Y-m-d",$end_day - ($days - 1) * (3600 * 24)); $days --; } foreach($_thisline as $v) { @$arr[$v] += $times; } } fclose($file_handle); foreach($arr as $n=>$v) echo $n. " ". $v."\r\n"; ?>
这样就能处理成这样的结果:
2003-07-19 2
2003-07-20 2
2003-07-21 2
2003-07-22 2
2003-07-23 2
然后就可以用gnuplot画图了。
发表回复