又下雨了,天阴暗的很!早上没赶上车又迟到了,相当郁闷!
做统计的时候,如:输入2009-05-01→2009-05-20
那第就需要把1-20号的数据都抽出来,但有可能中间没有数据,这从SQL中反映不了。因为它只会取出满足条件的记录。
这样在表示页面上,就需要将其补充上。方法,即判断查询范围的时间,是不是从SQL查询中返回,如果没有则Array_push进去。
算出两个期间的天数,然后在For循环中补充。
// 期間補足
if (!empty($start_date)) {
$date_list_1 = explode("-",$start_date);
if (empty($end_date)) {
$end_date = date("Y-m-d");
}
$date_list_2 = explode("-",$end_date);
$d1 = mktime(0,0,0,$date_list_1[1],$date_list_1[2],$date_list_1[0]);
$d2 = mktime(0,0,0,$date_list_2[1],$date_list_2[2],$date_list_2[0]);
$days=round(($d2-$d1)/3600/24);
for ($i = 0; $i <= $days; $i++) {
if (!in_array(date("Y-m-d", mktime(0,0,0,$date_list_1[1],$date_list_1[2]+$i,$date_list_1[0])), $date_list)) {
array_push($date_list, date("Y-m-d", mktime(0,0,0,$date_list_1[1],$date_list_1[2]+$i,$date_list_1[0])));
}
}
}
另外,用到了根据生年月日算出实际年龄的方法:
// 誕生日→年齢を変わる
$birth_day = "1999-01-01";
list($by,$bm,$bd)=explode('-', $birth_day);
$now_m = date('m');
$now_d = date('d');
$age = date('Y') - $by -1;
//不够严谨,作以下修正:2010/3/20,感谢网友提出。
//($now_m > $bm || $now_m = $bm && $now_d > $bd) {[/strike]
if ($now_m > $bm || ($now_m == $bm && $now_d > $bd)) {
$age ++;
}