Php 碳\碳给我的问题

Php 碳\碳给我的问题,php,laravel,php-carbon,Php,Laravel,Php Carbon,您好,我正在尝试构建一个应用程序,从今天开始绘制过去7天的图表,我正在使用Laravel 5-Carbon\Carbon date包。。 因此,如果今天是星期三,它将在星期二结束 如果今天是星期五,它将在星期四结束 $now = Carbon::now(); $ar = []; for($i=1; $i<7; $i++){ array_push($ar, $now->subDays($i)); } pr($ar, true)

您好,我正在尝试构建一个应用程序,从今天开始绘制过去7天的图表,我正在使用Laravel 5-Carbon\Carbon date包。。 因此,如果今天是星期三,它将在星期二结束 如果今天是星期五,它将在星期四结束

    $now = Carbon::now();

    $ar = [];
    for($i=1; $i<7; $i++){
        array_push($ar, $now->subDays($i));
    }

    pr($ar, true);

它应该持续到29日、28日、27日,但它可以追溯到11月9日,甚至不是连续的,比如09、08、07、06,只是11月9日,我不知道我出了什么错,请我需要帮助,谢谢。

当你在碳对象上使用函数时,该对象将更新自身并返回对该对象的引用。因此,$ar数组包含对同一对象的多个引用。每次使用subDays时,实际上都在更新数组中的每个对象

如果要用不同的碳对象填充阵列,每次都必须创建一个新实例。例如,像这样:

$ar = [];
for($i=1; $i<7; $i++){
    array_push($ar, now()->subDays($i));
}

是Laravel中的一个助手函数,它返回Carbon::now的一个新实例。

在Carbon对象上使用函数时,该对象将更新自身并返回对该对象的引用。因此,$ar数组包含对同一对象的多个引用。每次使用subDays时,实际上都在更新数组中的每个对象

如果要用不同的碳对象填充阵列,每次都必须创建一个新实例。例如,像这样:

$ar = [];
for($i=1; $i<7; $i++){
    array_push($ar, now()->subDays($i));
}
是Laravel中的一个助手函数,它返回Carbon::now的一个新实例

Carbon将在您每次调用subdays时更新其实例,因此您需要重新初始化

$day = Carbon::today();

$ar = [];

for($i=1; $i<=7; $i++){
 array_push($ar, $day);
 $day->subDay(1);
}
Carbon将在您每次调用subdays时更新其实例,因此您需要重新初始化

$day = Carbon::today();

$ar = [];

for($i=1; $i<=7; $i++){
 array_push($ar, $day);
 $day->subDay(1);
}
此处$day->subDay1;方法将修改对象值本身减去1,而不是返回修改后的值


此处$day->subDay1;方法是修改对象值本身减去1,而不是返回修改后的值。

我相信您已经有了答案,但作为补充说明,您使用循环计数器$I减去您发布的代码中的天数;实际上,这意味着你从日期对象中减去1天,然后第二次从同一日期对象中减去2天,然后是3天,等等。这就是为什么你在过去得到了日期1+2+3+4+5+6=21天的原因。我相信你已经有了答案,但作为旁注,您使用循环计数器$i减去您发布的代码中的天数;实际上,这意味着从日期对象中减去1天,然后第二次从同一日期对象中减去2天,然后是3天,以此类推。这就是为什么过去的日期为1+2+3+4+5+6=21天。很高兴我能提供帮助。考虑把这个标记为你的问题的解决方案,其他用户也会发现这一点。很高兴我能帮上忙。考虑把这个标记为你的问题的解决方案,其他用户也会发现这一点。当这个代码可以回答这个问题时,提供关于如何和/或为什么它解决问题的附加上下文会提高答案的长期价值。提供关于如何和/或为什么解决问题的附加上下文将提高答案的长期价值。