Не удается добавить общую цену в зависимости от цены и количества

#php #laravel #laravel-7

#php #laravel #laravel-7

Вопрос:

Я пытаюсь получить общую сумму в зависимости от цены и количества, но общая сумма, которую я получаю, равна двойному. Вот что я использую:

 foreach ($request->product_id as $product_id){
   foreach ($request->quantity as $quantity){
       $product = Product::find($product_id);
       if($product->discount_price == null){
           $total =  $product->selling_price * $quantity;
       }
       else{
           $total =  $product->discount_price * $quantity;
       }
       array_push($total_price, $total);
   }
}
return array_sum($total_price); 
  

Здесь $request-> product_id и $request-> quantity представляют собой массив, который я возвращаю из интерфейса. Поскольку пользователь может выбрать несколько продуктов и их соответствующее количество

Если я удалю array_sum в инструкции return, то я увижу многократное повторение общей суммы (показано на изображении)…Не знаю, как решить эту проблему

введите описание изображения здесь

Комментарии:

1. Извините, просто для пояснения, вы пытаетесь сложить все значения вместе?

2. Из вашего кода похоже, что для каждого продукта вы зацикливаете все количества из запроса, я думаю, вам нужно только 1 количество на продукт

3. Можете ли вы показать нам данные модели вашего запроса

4. Я бы попробовал отформатировать его так, чтобы количество добавлялось к продукту перед запуском цикла. Это ajax-форма или обычная форма? Вложенные циклы foreach вызывают проблему, потому что в каждом цикле product он перебирает все количества, отправленные в post.

5. будет ли array_combine ($request-> product_id , $request-> quantity ) выстраивать ваш массив для использования foreach с ключевым индексом?

Ответ №1:

попробуйте это

   foreach ($request->product_id as $key=>$product_id){
      $product = Product::find($product_id);
         if($product->discount_price == null){
             $total =  $product->selling_price * $request->quantity[$key];
          }
          else{
              $total =  $product->discount_price * $request->quantity[$key];
          }
       array_push($total_price, $total);
      }
    return array_sum($total_price);