2017-11-11 93 views
0

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

的'language'属性已被废弃了很久,并且不应该使用。 – Andreas

+2

什么while循环?代码中没有while循环 –

+0

@JaromandaX我没有发布整个脚本。 $ end_date来自while循环。 – Ansh

回答

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 
+1

注释不适用于扩展讨论;这个对话已经[转移到聊天](http://chat.stackoverflow.com/rooms/158967/discussion-on-answer-by-sunny-pun-leave-variable-on-last-iteration-of-while-循环)。 – Andy

相关问题