Мне нужно, чтобы $quantities поместился в $sections, чтобы не осталось никаких количеств.
Также product_id 1 не может находиться вместе с product_id 2 в одном разделе.
Сумма объемов $quantities всегда равна или меньше суммы объемов $sections.
Массивы $sections и $quantities в настоящее время упорядочены по объем, идущему от самого низкого до самого высокого. Но это можно изменить, если ваши решения требуют изменения.
Я пробовал зацикливать каждую секцию с одним количеством за раз, но это приводит к тому, что первое количество идет в первых 4 разделах, поэтому объем разделов составляет 14000, но количество в них составляет 13000.
$quantities = array(
0 => array(
'volume' => '13000',
'product_id' => '2'
),
1 => array(
'volume' => '24000',
'product_id' => '1'
)
);
$sections = array(
44 => array(
'id' => '44',
'volume' => '2000.00'
),
41 => array(
'id' => '41',
'volume' => '3000.00'
),
45 => array(
'id' => '45',
'volume' => '4000.00'
),
46 => array(
'id' => '46',
'volume' => '5000.00'
),
48 => array(
'id' => '48',
'volume' => '5000.00'
),
42 => array(
'id' => '42',
'volume' => '5000.00'
),
43 => array(
'id' => '43',
'volume' => '6000.00'
),
47 => array(
'id' => '47',
'volume' => '7000.00'
)
);
Например, результат должен выглядеть примерно так:
$output = array(
0 => array(
'section_id' => 43,
'volume' => 6000,
'product_id' => 2
),
1 => array(
'section_id' => 47,
'volume' => 7000,
'product_id' => 2
),
2 => array(
'section_id' => '44',
'volume' => 2000,
'product_id' => 1
),
3 => array(
'section_id' => '41',
'volume' => 3000,
'product_id' => 1
),
4 => array(
'section_id' => '45',
'volume' => 4000,
'product_id' => 1
),
5 => array(
'section_id' => '46',
'volume' => 5000,
'product_id' => 1
),
6 => array(
'section_id' => '48',
'volume' => 5000,
'product_id' => 1
),
7 => array(
'section_id' => '42',
'volume' => 5000,
'product_id' => 1
),
);
Я обновил исходный пост
Возможно ли, что количество никогда не будет достигнуто? (По количеству продукта 2 с 48000)
Тогда сумма заданных величин всегда равна или меньше суммы сечений.
Я предполагаю, что $sections всегда сортируется по объему
Да, массив разделов всегда сортируется по объему
Это похоже на проблема с упаковкой бункера, который является NP-трудным и, как таковой, не легко разрешим. Тем не менее, страница википедии даст вам некоторые алгоритмы для начала.
Если обобщить проблему - вам нужно найти подмассивы для каждой из величин. Вы можете найти больше информации здесь: поиск-под-массив-сумма-в-целочисленном-массиве






Покажите нам, какой результат вы ожидаете?