3v4l.org

run code in 500+ PHP versions simultaneously
<?php $weight_distribution = [ '5' => 0, '10' => 6, '15' => 7, '20' => 3, ]; function distribute_weights($weight, &$distribution) { while ($weight > 0) { foreach ($distribution as $max => $count) { if ($weight <= $max) { break; } } ++$distribution[$max]; $weight -= $max; } } distribute_weights(21, $weight_distribution); var_export($weight_distribution);
Output for 8.1.0 - 8.1.34, 8.2.0 - 8.2.30, 8.3.0 - 8.3.30, 8.4.1 - 8.4.18, 8.5.0 - 8.5.3
array ( 5 => 1, 10 => 6, 15 => 7, 20 => 4, )

preferences:
64.56 ms | 978 KiB | 4 Q