3v4l.org

run code in 300+ PHP versions simultaneously
<?php $start = new DateTime('2017-05-23'); $end = new DateTime('2017-06-21'); $dates = every_two_weeks($start, $end, ['tue', 'wed', 'sat']); foreach ($dates as $date) { echo $date->format('Y-m-d D').PHP_EOL; } function every_two_weeks($start, $end, $days) { $dates = []; $mon = new DateTime('mon this week '.$start->format('Y-m-d')); while ($mon <= $end) { $of = 'this week '.$mon->format('Y-m-d'); foreach ($days as $day) { $date = new DateTime("$day $of"); if ($date < $start) { continue; } if ($date > $end) { break 2; } $dates[] = $date; } $mon->add(new DateInterval('P2W')); } return $dates; }
Output for 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.34, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.30, 8.2.0 - 8.2.24, 8.3.0 - 8.3.12
2017-05-23 Tue 2017-05-24 Wed 2017-05-27 Sat 2017-06-06 Tue 2017-06-07 Wed 2017-06-10 Sat 2017-06-20 Tue 2017-06-21 Wed

preferences:
76.79 ms | 408 KiB | 5 Q