- var_dump: documentation ( source)
- min: documentation ( source)
- array_pop: documentation ( source)
<?php
$vouchers = array(
1 => 100,
3 => 150,
5 => 100
);
$specials = array(
3 => true
);
$discounts = array();
$orders = [50, 100, 200, 300, 500, 1000];
foreach ($orders as $order) {
foreach ($vouchers as $voucher) {
$discounts[$order][$voucher] = 0;
}
$remainingValue = $order;
$voucher = array_pop($vouchers);
if ($voucher === null) {
continue;
}
while($remainingValue > 0 && $voucher !== null) {
$value = min ($remainingValue, $voucher);
$discounts[$order][$voucher] = $value;
$vaucher = array_pop($vouchers);
}
}
var_dump($discounts);