php - 使用 PHP 循环遍历数组

标签 php arrays for-loop

我想使用 PHP 填充一个数组,从今天的日期开始一直到 future 几天。当我尝试以下操作时,所有列都包含“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>";

最佳答案

对象通过引用传递。您正在为数组中的同一对象分配多个引用。

如果你确实需要数组中的所有日期时间对象,你可以这样做

$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');
}

关于php - 使用 PHP 循环遍历数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19909697/

相关文章:

php - 计算同一个月的不同天数

php - MySQL UNION ALL Issue 得到正确的结果

php - 标题不起作用

php - 如何使用 PHP 的 password_hash 来散列和验证密码

objective-c - block 迭代 vs 快速枚举 vs for 循环

python - 来自 N 个非连续重复的 M 个元素的组合

javascript - 将数据推送到两级数组上

c - 为什么变量在递归调用中获得相同的地址?

c - 使用 C 中的 Enter 键停止用户输入

c - 以相反顺序输出数组中的元素