在php中为两个不同的日期做While



要提示生效日期,直到满足条件。

代码:

$effective_date = '2020/09/03';
$last_date = '2020/12/03';
$last_date = new DateTime($last_date);
$effective_date = new DateTime($effective_date);
do{
$edate = $effective_date->format('Y/m/d');
echo "<script>alert('".$edate."');</script>";
$nxtdate = date('Y-m-d', strtotime("+1 months", strtotime($edate)));
$effective_date = new DateTime($nxtdate);
} while($effective_date > $last_date);

它只提醒一次,但我的期望是它应该被提醒3次

由于您的while条件不正确,它只发出一次警报。

注意,do { ... } while (condition)循环将至少运行一次,并且只要conditiontrue就继续运行,直到它变成true

Changewhile($effective_date > $last_date)towhile($effective_date < $last_date):

$effective_date = '2020/09/03';
$last_date = '2020/12/03';
$last_date = new DateTime($last_date);
$effective_date = new DateTime($effective_date);
do{
$edate = $effective_date->format('Y/m/d');
echo "<script>alert('".$edate."');</script>";
$nxtdate = date('Y-m-d', strtotime("+1 months", strtotime($edate)));
$effective_date = new DateTime($nxtdate);
} while($effective_date < $last_date);

输出:

<script>alert('2020/09/03');</script><script>alert('2020/10/03');</script><script>alert('2020/11/03');</script>

更新如果您希望在执行循环内的语句之前检查condition,请使用while循环:

while ($effective_date < $last_date) {
$edate = $effective_date->format('Y/m/d');
echo "<script>alert('".$edate."');</script>";
$nxtdate = date('Y-m-d', strtotime("+1 months", strtotime($edate)));
$effective_date = new DateTime($nxtdate);
}

最新更新