3v4l.org

run code in 300+ PHP versions simultaneously
<?php $a = [101 => 5, 109 => 100, 220 => 50, 231 => 45, 245 => 90]; $b = ['PRO' => 12, 'LOG' => 15, 'DEV' => 100]; $rest = 0; foreach ($a as &$value) { if ($value < $rest) { $rest -= $value; $value = 0; continue; } else { $value -= $rest; $rest = 0; } while ($value > 0 && key($b) !== null) { if ($value < current($b)) { $rest = current($b) - $value; $value = 0; } else { $value = $value - current($b); $rest = 0; } next($b); } } var_dump($a);

preferences:
17.26 ms | 407 KiB | 5 Q