3v4l.org

run code in 300+ PHP versions simultaneously
<?php $_POST['s1'] = '16.15'; $_POST['s2'] = '23.30'; $wagesLookup = [ '18:00' => 146 / 4, // morning '22:00' => 204 / 4, // evening '24:00' => 244 / 4 // night ]; $period = new DatePeriod( DateTime::createFromFormat('H.i', $_POST['s1']), new DateInterval('PT15M'), DateTime::createFromFormat('H.i:01', "{$_POST['s2']}:01") // bump ahead to make "inclusive" ); $total = 0; foreach ($period as $dt) { $time = $dt->format('H:i'); foreach ($wagesLookup as $mark => $pay) { if ($time <= $mark) { break; } } printf("%s earned %.02f\n", $dt->format('H:i'), $pay); $total += $pay; } echo "Total: $total";
Output for 7.4.0 - 7.4.33, 8.0.1 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.26, 8.4.1 - 8.4.13
16:15 earned 36.50 16:30 earned 36.50 16:45 earned 36.50 17:00 earned 36.50 17:15 earned 36.50 17:30 earned 36.50 17:45 earned 36.50 18:00 earned 36.50 18:15 earned 51.00 18:30 earned 51.00 18:45 earned 51.00 19:00 earned 51.00 19:15 earned 51.00 19:30 earned 51.00 19:45 earned 51.00 20:00 earned 51.00 20:15 earned 51.00 20:30 earned 51.00 20:45 earned 51.00 21:00 earned 51.00 21:15 earned 51.00 21:30 earned 51.00 21:45 earned 51.00 22:00 earned 51.00 22:15 earned 61.00 22:30 earned 61.00 22:45 earned 61.00 23:00 earned 61.00 23:15 earned 61.00 Total: 1413

preferences:
126.56 ms | 408 KiB | 5 Q