3v4l.org

run code in 300+ PHP versions simultaneously
<?php declare(strict_types=1); error_reporting(-1); ini_set('display_errors', 'On'); /** * @param DateTimeImmutable $start * @param DateTimeImmutable $end * * @return Generator */ function remainingDaysPerMonthBetween(\DateTimeImmutable $start, \DateTimeImmutable $end): \Generator { while ($start < $end) { $diff = $start->diff(min( $start->modify('last day of this month'), $end )); yield [$start, $diff->days]; $start = $start->modify('first day of next month'); } } $start = new \DateTimeImmutable('2019-02-11'); $end = new \DateTimeImmutable('2019-04-23'); foreach (remainingDaysPerMonthBetween($start, $end) as [$date, $remainingDays]) { printf("%s: %d\n", $date->format('M'), $remainingDays + 1); }
Output for 7.1.25, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.4, 8.3.6
Feb: 18 Mar: 31 Apr: 23
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 Feb: 18 Mar: 31 Apr: 23

preferences:
194.06 ms | 402 KiB | 156 Q