在while循环的最后一次迭代中保留变量

时间:2017-11-11 08:40:24

标签: javascript php mysql

我遇到了代码中的情况。变量$end_date在while循环中迭代,显示五章的结束日期。现在在这个变量的基础上,我必须显示一个警告框。我的问题是当找到最后一章的结束日期时弹出警告框,这是无效的,因为对于其他四章,结束日期已延长。如何仅为最后一章留下结束日期,并且不应匹配警报框条件。我已经尝试了很多,但不能为此做出逻辑。帮助或建议将不胜感激。

  if((strtotime($today_date) >= strtotime($end_date) || ( $pass_count == 0 && $status_request != 2 && $status_request != 0 ) ) )
  {


 echo ("<SCRIPT LANGUAGE='JavaScript'>
       mess1='Your exam validity date has been expired. Click OK to request for extending your Quiz validity or you can ignore by clicking Cancel.'  

       x = confirm(mess1);
       if (x == true)  
   {
       window.location = 'validity_request_mail.php?userid=$userid ';    

   } 

       </SCRIPT>");

 }

1 个答案:

答案 0 :(得分:0)

解决方案

我们可能会引入一个名为$last_date的新变量,用于捕获所有章节的“最大”结束日期。

似乎问题是在while()循环后,$end_date已设置,它应该是最后一个日期。但是,最后一次(第5次迭代)在其他章节的其他$end_date之前有$end_date,因此显示confirm()框不正确(因为有些章节未过期尚未)。

所以这应该解决它:

while (...) { 
    ... 
} 
... 
// snippet in OP's post

要:

$last_date = '';
while (...) { 
    ... 
    if ( strtotime($end_date) > strtotime($last_date) ) { 
        $last_date = $end_date; 
    } 
} 
... 
$end_date = $last_date; // continue with snippet in OP's post