定期的なイベントを入力するためのコードをいくつか書きました。最も厄介な部分は、ユーザーがイベントを作成し、x 週間ごとに選択した曜日に繰り返すことができることです。
たとえば、ユーザーは月、水、金を選択して、3 週間ごとに繰り返すことができます。
毎週なら簡単です-私はこのようなことをすることができます:
$start = new DateTime( '2013-10-01' );
$end = new DateTime( '2014-01-01 23:59:59' );
$interval = new DateInterval('P1D');
$period = new DatePeriod($start, $interval, $end);
foreach ($period as $date) {
$dayOfWeek = $date->format('l');
if ($dayOfWeek == 'Monday' || $dayOfWeek == 'Wednesday' || $dayOfWeek == 'Wednesday') {
// do something
}
}
上記のコードの場合、3 週間ごとに月/水/金を含めるように変更するにはどうすればよいですか? 毎日ループせずにこれを達成するためのより良い方法はありますか?
$date->format('w'); を使用できると考えています。これにより、その年の数値の週が得られます。その後、カウンターを作成してリセットすることができました。