在新的月份循环中添加新行

时间:2018-03-09 00:28:47

标签: php foreach

我想在循环中显示新月份时添加空格。 $item['date_expires']在循环中显示为年,月和日(YYYY-MM-DD)。

<?php
    foreach($get_items AS $item) {
        $current = date('m', strtotime($item['date_expires']));

        if($current != date('m', strtotime($item['date_expires']))) {
            $new_month = true;
            $current = date('m', strtotime($item['date_expires']));
        }

        echo $item['date_expires'];

        echo $new_month == true ? '<br><br>' : '';
    }
?>

以下是现在的展示方式:

2018-11-27
2018-10-26
2018-09-25
2018-04-27
2018-04-09
2018-04-09
2018-04-05
2018-04-03
2018-04-02
2018-04-01
2018-04-01
2018-04-01
2018-04-01
2018-04-01
2018-04-01
2018-04-01
2018-03-30
2018-03-28
2018-03-28
2018-03-26
2018-03-26
2018-03-23
2018-03-21
2018-03-19

我希望它列出这样的日期:

2018-11-27

2018-10-26

2018-09-25

2018-04-27
2018-04-09
2018-04-09
2018-04-05
2018-04-03
2018-04-02
2018-04-01
2018-04-01
2018-04-01
2018-04-01
2018-04-01
2018-04-01
2018-04-01

2018-03-30
2018-03-28
2018-03-28
2018-03-26
2018-03-26
2018-03-23
2018-03-21
2018-03-19

我的代码中遗漏了什么?

1 个答案:

答案 0 :(得分:2)

基本上是因为你每次围绕循环设置$current作为你做的第一件事总是一样的。

查看代码中的评论

<?php
    $current = null;    // init $current

    foreach($get_items AS $item) {
        // This set $current to the current rows date
        // every time round the loop so delete this line
        //$current = date('m', strtotime($item['date_expires']));

        if($current != date('m', strtotime($item['date_expires']))) {
            // output the newline here
            echo '<br>';
            // now reset $current to this rows dates month
            $current = date('m', strtotime($item['date_expires']));
        }

        echo $item['date_expires'];

        // now done in the loop so delete this line
        //echo $new_month == true ? '<br><br>' : '';
    }
?>