0
do while
の条件は、配列に10個の要素が含まれるまで-1日後に戻ることができますか?do while:条件が真になるまで-1日後に戻る
は、ここに私のテストコードです:
$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
しかし$date
の出力は、ここで間違っています。それは実行の間に高すぎる飛び越しますが、線形でなければなりません:24,23,22,21など
元の日付を - $ i日で修正するか、現在の日付を-1日だけ修正する必要があります。単純ですね。 – rjdown
@ rjdown:はい、あなたは正しいです。日付の-1日は私が必要なすべてです。 – Lee
あなたは何をしているのか考えてみましょう。それぞれの反復のために '$ date'変数を新しい日付に設定しています。したがって、3日を引くと、 '2016-01-21'からそれを減算し、元の日付は' 2016-01-24'ではないので、次の日付は18日です。 – Andy