我有一个带有几个表的数据库,其中包含以时间戳为键的数据记录(dateGMT)。我正在尝试创建一个函数,该函数返回一个 1 和 0 的数组,其中 0 表示每天数据之间存在 4 小时或更长时间的差距。
由于某种原因,我的功能不起作用,我认为这与搜索我需要用 0 标记的天数有关。任何人都能够看到我可能在哪里犯了我的错误?
另外,由于某种原因,这感觉效率不是很高,也欢迎其他解决原始任务的方法!
提前致谢!
//create array with the dates from start of recordings to now
$period = iterator_to_array(new DatePeriod(new DateTime('2013-06-10'),new DateInterval('P1D'),new DateTime()));
$p2 = array();
$n = 0;
//the actual date is used as key for the number of the date
foreach($period as $p){
array_push($p2,date('Y-m-d',strtotime($p->format('Y-m-d'))));
//other way i tried: $p2[$p->format('Y-m-d')]= $n; $n++;
}
function makeArr($table,$p) {
$con = mysql_connect("127.0.0.1", "user", "pass");
mysql_select_db("table",$con);
$ret = array_pad(array(),count($p),0);
$query = "SELECT dateGMT FROM `$table` ORDER BY `dateGMT` ASC";
$result = mysql_query($query);
$d1 = strtotime('2013-06-10');
$n = 0;
while ($row = mysql_fetch_assoc($result, MYSQL_ASSOC)){
$d2 = strtotime(implode("",$row));
if($d1+14400 > $d2){
$ret[array_search(date('Y-m-d',$d1),$p)] = 1;
//part of the other way i tried: $ret[$p[$d1]] = 1;
}
$d1 = $d2;
}
return $ret;
}