do while:返回-1天直到条件成立

时间:2016-07-02 18:07:23

标签: php do-while

如何设置一个selectpicker条件,该条件可以追溯到-1天,直到我的数组有10个元素?

这是我的测试代码:

do while

这是我的输出:

$date = '2016-01-24';

$array = [];

$i = 0;

do {

    $days_back = '-' . $i++ . ' day';

    $date = new DateTime($date);
    $date->modify($days_back);
    $date = $date->format('Y-m-d');

    echo '<br /> $date: ' . $date . ' // $days_back: ' . $days_back . ' // $i: ' . $i . '<br />';

    array_push(
        $array,
        array($date),
        array($days_back)
    );

} while (count($array) < 10);

$date: 2016-01-24 // $days_back: -0 day // $i: 1 $date: 2016-01-23 // $days_back: -1 day // $i: 2 $date: 2016-01-21 // $days_back: -2 day // $i: 3 $date: 2016-01-18 // $days_back: -3 day // $i: 4 $date: 2016-01-14 // $days_back: -4 day // $i: 5 的输出在这里不正确。它在运行之间跳得太高,但它应该是线性的:24,23,22,21等。

1 个答案:

答案 0 :(得分:0)

只需要在两个地方重命名$ date变量。这是代码

$currentDate = '2016-01-24';
$array = [];
$i = 0;
do {
    $days_back = '-' . $i++ . ' day';
    $date = new DateTime($currentDate);
    $date->modify($days_back);
    $date = $date->format('Y-m-d');
    echo '<br /> $date: ' . $date . ' // $days_back: ' . $days_back . ' // $i: ' . $i . '<br />';
    array_push(
        $array,
        array($date),
        array($days_back)
    );
} while (count($array) < 10);