从php中的数组中动态获取缺少的日期值

从php中的数组中动态获取缺少的日期值,php,date,Php,Date,我们正在创建一个员工需要更新每日状态报告的系统。该系统的基本目的是记录未更新状态报告的缺失日期 我找到了一种方法,通过检查两个数组值之间的日差,然后计数并显示日数。但是,我不确定如何在2个数组值之间动态执行此操作 以下是我在输出时使用的代码: //id of the person updating the DSR $userid = $_id; // Array to fetch all the DSR by sp

我们正在创建一个员工需要更新每日状态报告的系统。该系统的基本目的是记录未更新状态报告的缺失日期

我找到了一种方法,通过检查两个数组值之间的日差,然后计数并显示日数。但是,我不确定如何在2个数组值之间动态执行此操作

以下是我在输出时使用的代码:

//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
。我相应地修改了答案。