我想使用 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/