Массивы, соотнесение данных

peltonen

Новичок
Народ, нужна помощь с алгоритмом, дайте пожалуйста наводку

Дано и уже есть в базе:
1 заказ, несколько позиций, у каждой - цена
несколько платежей - от 1 до 3, общая сумма равна сумме заказа

нужно вывести в цикле каждую позицию с соотнесенной суммой из платежей

Например

Товар1 => 2руб
Товар2 => 3руб
Товар3 => 4руб
Товар4 => 5руб
Итого = 14руб

Платеж1 => 1руб
Платеж2 => 5руб
Платеж3 => 8руб

Надо на выходе
Товар1 2руб => Платеж1 1руб, Платеж2 1руб
Товар2 3руб => Платеж2 3руб
Товар3 4руб => Платеж2 1руб, Платеж3 3руб
Товар4 5руб => Платеж3 5руб

Простите, если сумбурно написал, конец рабочего дня %)
 

rotoZOOM

ACM maniac
PHP:
$pay_idx = 0;  //!< индекс по платежам
$sub = 0;        //!< текущий заем из текущего платежа
for ($i = 0 ; $i < count($goods) ; $i++)  // бежим по всем товарам 
{
    $accum = 0;
    echo 'Товар '.$i.' => ';
    while ($accum < $goods[$i]['price'])
    {
        $sum = min($goods[$i]['price'] - $accum, $payment[$pay_idx] - $sub);
        $accum += $sum;
        $sub += $sum;
        echo 'Платеж '.$pay_idx.' '.$sum.'руб, ';
        if ($sub == $payment[$pay_idx])
        {
            $pay_idx++;
            $sub = 0;
        }
    }
    echo "\n";
}
Не проверял, но суть должна быть ясна.
 

С.

Продвинутый новичок
А что, сумма очередного платежа будет всегда равна какому-то одному из неоплаченных товаров? Что-то верится с трудом.
 
Сверху