#php #arrays
#php #массивы
Вопрос:
Я пытаюсь написать калькулятор доставки, пока у меня неплохо получается. Входные данные представляют собой массив продуктов из заказа. Проблема, с которой я столкнулся, заключается в том, что некоторые продукты в списке продуктов имеют значение количества больше 1. Поскольку калькулятор использует foreach
много, было бы неплохо разделить все продукты вместо значения количества. Есть ли способ, которым я могу скопировать запись о продукте столько раз, сколько значение поля количества, чтобы я получил расширенный массив?
Комментарии:
1. Не могли бы вы, пожалуйста, опубликовать какой-нибудь код?
Ответ №1:
Лучшим решением было бы использовать цикл for — если ваш код действительно требует от вас повторения X раз, где X — количество продуктов. Не видя кода, я могу только догадываться о схеме вашей структуры данных, но этот фрагмент может указать вам на правильное решение:
foreach ($products as $product) {
$productId = $product["id"];
for ($i = 0; $i < $product["quantity"]; $i ) {
// your code here
}
}
Я бы не советовал вам подходить к этой проблеме так, как вы изложили в своем вопросе. Создание нового массива для имитации того, что будет делать цикл for, является пустой тратой памяти и процессора и гораздо менее масштабируемо.
Комментарии:
1. Просто красиво! Я все еще новичок в php, цикл for никогда не приходил мне в голову, но это, конечно, идеальное решение. Вы также правильно угадали структуру данных, но я буду иметь в виду опубликовать пример кода в будущем. Спасибо!
Ответ №2:
Сложно ответить, не глядя на ваш код, но поможет ли это?
$products = array_merge($products, array_fill(0, $quantity, $product));