0

Carbon で過去 30 日間の配列を取得するにはどうすればよいですか。レコードに値がないギャップを埋めるために、日付のデータベース結果と比較する日付の配列を生成しようとしました

多かれ少なかれ望ましい結果を返すこのスニペットがありますが、より良いアプローチがあるかどうか疑問に思います

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

  dd($dates);
4

1 に答える 1

6

あなたはそれを正しく理解しました。$iただし、次のように渡すことで、少し短くすることができますaddDays

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

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

ところで、 a foreachwith aは一般的なループrangeよりも読みやすいかもしれません。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));
于 2015-08-23T20:46:14.287 に答える