PHP — Как дублировать продукты в массиве списка продуктов в зависимости от значения количества

#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));