过去日期的碳数组

Carbon array of past dates

如何使用 Carbon 获取最近 30 天的数组。我试图生成一个日期数组来与日期的数据库结果进行比较,以填补记录没有值的空白

我有这个片段 returns 或多或少达到了预期的结果,但我想知道是否有更好的方法

  $start = Carbon::now()->subDays(30);
  for ($i = 0 ; $i < 30 ; $i++) {
        $dates[] = $start->copy();
        $start->addDay();
  }

  dd($dates);

你没看错。不过,您可以通过将 $i 传递给 addDays:

来稍微缩短它
$start = Carbon::now()->subDays(30);

for ($i = 0 ; $i <= 30; $i++) {
    $dates[] = $start->copy()->addDays($i);
}

顺便说一句,foreachrange 可能比通用的 for 循环更容易阅读。

$start = Carbon::now()->subDays(30);

foreach (range(0, 30) as $day) {
    $dates[] = $start->copy()->addDays($day);
}

甚至 map:

$start = Carbon::now()->subDays(30);

$dates = array_map(fn ($day) => $start->copy()->addDays($day), range(0, 30));