从php中的数组中动态获取缺少的日期值
我们正在创建一个员工需要更新每日状态报告的系统。该系统的基本目的是记录未更新状态报告的缺失日期 我找到了一种方法,通过检查两个数组值之间的日差,然后计数并显示日数。但是,我不确定如何在2个数组值之间动态执行此操作 以下是我在输出时使用的代码:从php中的数组中动态获取缺少的日期值,php,date,Php,Date,我们正在创建一个员工需要更新每日状态报告的系统。该系统的基本目的是记录未更新状态报告的缺失日期 我找到了一种方法,通过检查两个数组值之间的日差,然后计数并显示日数。但是,我不确定如何在2个数组值之间动态执行此操作 以下是我在输出时使用的代码: //id of the person updating the DSR $userid = $_id; // Array to fetch all the DSR by sp
//id of the person updating the DSR
$userid = $_id;
// Array to fetch all the DSR by specific user
$fine = getDSRbyUserIdOrderDate($userid);
$today = date('d-m-Y');
$tomorrow = date("d-m-Y", strtotime($today . " +1 day"));
$ok = count($fine) - 1;
//Array to get dates
$d1 = $fine[0]['date'];
$d2 = $fine[1]['date'];
$d3 = $fine[2]['date'];
// Function call to find date difference
$dateDiff = dateDiffInDays($d1, $d2);
$dateDiff1 = dateDiffInDays($d2, $d3);
echo "<h4 style='color:red'>You have missed the DSR on the following dates.</h4>";
for($p = 1; $p < $dateDiff; $p++){
$missingdate = date("d-m-Y", strtotime($d1 . " +$p day"));
echo "<span style='color:red'>$missingdate</span>";
echo "<br />";
}
for($p = 1; $p < $dateDiff1; $p++){
$missingdate = date("d-m-Y", strtotime($d2 . " +$p day"));
echo "<span style='color:red'>$missingdate</span>";
echo "<br />";
}
if($d2 != $today){
echo "<span style='color:red'>$today <i>- Kindly update DSR before midnight</i></span> ";
echo "<br />";
}
//更新DSR的人员的id
$userid=$\u id;
//按特定用户获取所有DSR的数组
$fine=getDSRbyUserIdOrderDate($userid);
$today=日期('d-m-Y');
$明天=日期(“d-m-Y”,标准时间($今天“+1天”);
$ok=计数($fine)-1;
//获取日期的数组
$d1=$fine[0]['date'];
$d2=$fine[1]['date'];
$d3=$fine[2]['date'];
//函数调用以查找日期差异
$dateDiff=dateDiffInDays($d1,$d2);
$dateDiff1=dateDiffInDays($d2,$d3);
echo“您在以下日期错过了DSR。”;
对于($p=1;$p<$dateDiff;$p++){
$missingdate=日期(“d-m-Y”,标准时间($d1.+$p天”);
回显“$missingdate”;
回声“
”;
}
对于($p=1;$p<$dateDiff1;$p++){
$missingdate=日期(“d-m-Y”,标准时间($d2.+$p天”);
回显“$missingdate”;
回声“
”;
}
如果($d2!=$today){
echo“$today-请在午夜前更新DSR”;
回声“
”;
}
输出:
我会先按日期创建条目列表,然后相应地“绘制”它
$start_date=新日期时间('2019-11-23');
$num_天=10天
$from_db_by_date=[];
foreach(罚款为$entry){
$from_db_by_date[$entry['date']]=$entry;
}
$all_by_date=[];
对于($i=0;$i<$num_天;$i++){
$date_str=$starting_date->格式('d-m-Y');
$all_by_date[$date_str]=$from_db_by_date[$date_str]?:null;
$starting_date->修改(“+1天”);
}
现在,您可以循环查看
$all\u by\u date
,检查条目是否为null
,并相应地执行操作。嘿,谢谢,伙计,代码正常,但是出现了一个小错误。注意:第52行D:\xampp\htdocs\catking\intranet\dsr_personal.php中的未定义索引:16-11-2019,如果您能解释代码的这个链接,那将是一个很大的帮助$all_by_date[$date_str]=$from_db_by_date[$date_str]?:空<代码>$a=$b?:$c代码>表示“$a等于$b,如果它存在,并且它包含一个非伪值,否则为$c”。关于日期,我没有意识到您使用的是d-m-Y
。我相应地修改了答案。