Skip to content

Instantly share code, notes, and snippets.

@JingwenTian
Created October 9, 2014 17:18
Show Gist options
  • Save JingwenTian/97beb4cda95e6c1883c1 to your computer and use it in GitHub Desktop.
Save JingwenTian/97beb4cda95e6c1883c1 to your computer and use it in GitHub Desktop.
<?php
//模拟一个订单数组
$arr = array(
0 => array(
"o_id"=>"1",
"name"=>"田景文",
"tel"=>"18677216692",
"order_date"=>"1412146800" //10-1
),
1 => array(
"o_id"=>"2",
"name"=>"田景文2",
"tel"=>"18677216692",
"order_date"=>"1412146800" //10-1
),
2 => array(
"o_id"=>"3",
"name"=>"田景文3",
"tel"=>"18677216692",
"order_date"=>"1412319600" //10-3
),
3 => array(
"o_id"=>"4",
"name"=>"田景文4",
"tel"=>"18677216692",
"order_date"=>"1412492400" //10-5
),
4 => array(
"o_id"=>"5",
"name"=>"田景文5",
"tel"=>"18677216692",
"order_date"=>"1412492400" //10-5
),
5 => array(
"o_id"=>"6",
"name"=>"田景文6",
"tel"=>"18677216692",
"order_date"=>"1412751600" //10-8
),
6 => array(
"o_id"=>"7",
"name"=>"田景文7",
"tel"=>"18677216692",
"order_date"=>"1412924400" //10-10
)
);
//获取时间数组的函数
function getDateArr ( $start, $end )
{
$date = array();
$s = abs((strtotime(date('Y-m-d',$start))-strtotime("xxxx-xx-xx"))/86400);
$e = abs((strtotime(date('Y-m-d',$end))-strtotime("xxxx-xx-xx"))/86400);
$num = $e - $s;//活动总天数
for($i = 0;$i<=$num;$i++){
$date[] = date('Y-m-d',$start+86400*$i);
}
return $date;
}
$start = 1412146800;//开始时间2014-10-1
$end = 1412838000;//结束时间2014-10-9
$date = getDateArr ( $start, $end );//输出10/1-10/9的日期数组
$newArr = array();//定义一个新数组,用于存储结果数据
$existDate = array();//定义一个存储存在数据的日期的数组
$emptyDate = array();//定义一个存储空数据的日期的数组
//定义一套空值模板(没有在日期范围内的)
$emptyTemplate = array(
"o_id"=>"0",
"name"=>"0",
"tel"=>"0",
"order_date"=>"0"
);
//循环日期
foreach($date as $key=>$value){
//按照期日去循环数据
foreach($arr as $k => $v){
if(date('Y-m-d',$arr[$k]['order_date']) == $date[$key]){
$newArr[$date[$key]][] = $arr[$k];
$existDate[] = $date[$key];//如果有数据则记录下这个日期
}
}
}
$emptyDate = array_diff($date,array_unique($existDate));//差集得到没有数据的日期
//给没有日期的数组加上默认的模板
foreach($emptyDate as $key => $value){
$newArr[$emptyDate[$key]] = $emptyTemplate;
}
//重新对数据按照日期进行整理
echo '<pre>';
print_r($newArr);
print_r(array_unique($existDate));
print_r($emptyDate);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment