【发布时间】:2021-11-06 09:32:20
【问题描述】:
我正在循环通过一个 for 循环来用日期填充一个数组。每次迭代我都想将日期变量增加一天。
$myDate = date_create(date_default_timezone_get());
$myArr;
for ($i = 0; $i <= 1; $i++) {
$myArr[$i] = $myDate;
$myDate->modify('+1 day');
}
如果当前日期是 2021 年 11 月 6 日,它将返回给我什么:
echo date_format($myArr[0], 'd.m.Y'); //08.11.2021
echo date_format($myArr[1], 'd.m.Y'); //08.11.2021
我希望它返回 06.11.2021 和 07.11.2021 但它似乎使用某种引用而不是我的数组中的值。谁能解释一下?
【问题讨论】:
-
在 PHP 中,与许多其他语言一样,对象是通过引用传递的。因此,您正在添加和修改同一个对象实例。请检查clone 运算符。
-
"似乎它使用了某种引用" -- 使用php.net/manual/en/function.spl-object-id 找出自己。
-
我不太习惯 PHP 编程,但我发现了这个帖子,并认为这通常很重要:stackoverflow.com/questions/879/…
-
如果您不再需要日期对象,您应该在循环中格式化日期并将格式化的字符串分配给您的数组。