2

PHP を使用して、今日の日付から数日先の配列にデータを入力したいと考えています。以下を試してみると、すべての列に「2013-11-18」が含まれています。私はそれを2時間いじっていましたが、役に立ちませんでした。私は何が欠けていますか?

//Get "Day 0", today if undefined
if(isset($_GET['DAY0']) == TRUE){
    $day0 = new DateTime($_GET['DAY0']);
} else {
    $day0 = new DateTime('today');
}

    // save day0 + 7 days into into dayArray
    $dayArray[0] = $day0;
    for($i=1; $i<8; $i++){
        $day0->modify('+1 day');
        $dayArray[i]= $day0;
    }

    echo "<tr>"; 
    for ($i = 0; $i < 7; $i++) {
        echo "<th>".$dayArray[i]->format('Y-m-d')."</th>";
    }
    echo "</tr>";
4

4 に答える 4

2

オブジェクトは参照によって渡されます。配列内の同じオブジェクトに複数の参照を割り当てています。

配列内のすべての日時オブジェクトが本当に必要な場合は、次のようにすることができます

$interval = new DateInterval('P1D');
$start = new DateTime('today');

$dayArray = [clone $start];

for ($i = 1; $i < 8; $i++) {
    $dayArray[] = clone $start->add($interval);
}

または、すでに提案されているように、フォーマットされた日付を保存することもできます。

$interval = new DateInterval('P1D');
$start = new DateTime('today');

$dayArray = [$start->format('Y-m-d')];

for ($i = 1; $i < 8; $i++) {
    $dayArray[] = $start->add($interval)->format('Y-m-d');
}
于 2013-11-11T15:23:10.527 に答える
0

次のように DatePeriod を作成できます。

    if(isset($_GET['DAY0']) == TRUE){
        $day0 = new DateTime($_GET['DAY0']);
    } else {
        $day0 = new DateTime('today');
    }

    $enddate = new DateTime();

    $period = new DatePeriod(
            $day0,
            new DateInterval('P1D'),
            $enddate->add(new DateInterval('P7D'))
    );

    echo "<tr>";
      foreach ($period as $datetime) {
         echo "<th>".datetime->format('Y-m-d')."</th>";

      }
    echo "</tr>";
于 2013-11-11T15:50:10.903 に答える
0

あなたの2つ$dayArray[i]$dayArray[$i]

于 2013-11-11T15:22:14.137 に答える
0

タイムスタンプを保存できます:

// save day0 + 7 days into into dayArray
$dayArray[0] = $day0->format('U');
for($i=1; $i<8; $i++){
    $day0->modify('+1 day');
    $dayArray[$i] = $day0->format('U');
}

echo "<tr>"; 
for ($i = 0; $i < 7; $i++) {
    echo "<th>".date('Y-m-d', $dayArray[$i])."</th>";
}
于 2013-11-11T15:33:09.970 に答える