2015-04-22 5 views
-3

Как суммировать значения массива, если продукты одинаковы? Мне нужна сумма product_price, количество, total_price, shipping_price. Это мой примерКак суммировать значения массива, если product_id одинаково?

[936] => Array 
     (
      [order_number] => 936 
      [status] => cancelled 
      [products] => Array 
       (
        [0] => Array 
         (
          [product_id] => 19 
          [sku] => sku2222222 
          [product_price] => 12.00 
          [quantity] => 1 
          [total_price] => 17 
          [shipping_price] => 5.00 
         ) 

        [1] => Array 
         (
          [product_id] => 19 
          [sku] => sku2222222 
          [product_price] => 12.00 
          [quantity] => 1 
          [total_price] => 17 
          [shipping_price] => 5.00 
         ) 

        [2] => Array 
         (
          [product_id] => 5 
          [sku] => sku2222222 
          [product_price] => 12.00 
          [quantity] => 1 
          [total_price] => 17 
          [shipping_price] => 5.00 
         ) 

       ) 
     ) 

Мне нужны результаты, как это:

http://paste.ofcode.org/zeRZfLwDKj7btTtn2KSnmZ

+1

pls доля требуется формат результата –

+1

'for' loop поможет. –

+0

Вы можете сделать операцию удаления обновления, используя PHP LINQ PLS, посмотрите https://phplinq.codeplex.com/wikipage?title=Examples url для получения дополнительной информации –

ответ

0

Вы должны использовать for цикл, чтобы суммировать все необходимые переменные.

$orders = array(
    936 => array(
     "order_number" => 936, 
     "products" => array(
      array(
       "product_id" => 19, 
       "total_price" => 17, 
       "shipping_price" => 10 
      ), 
      array(
       "product_id" => 19, 
       "total_price" => 17, 
       "shipping_price" => 10 
      ), 
      array(
       "product_id" => 5, 
       "total_price" => 17, 
       "shipping_price" => 10 
      ), 
     ) 
    ) 
); 

foreach ($orders as $order_id => $order) { 
    $order_products = array(); 
    foreach ($order['products'] as $product) { 
     if (isset($order_products[$product['product_id']])) { 
      $order_products[$product['product_id']]['total_price'] += $product['total_price']; 
      $order_products[$product['product_id']]['shipping_price'] += $product['shipping_price']; 
     } else { 
      $order_products[$product['product_id']] = $product; 
     } 
    } 
    $orders[$order_id]['products'] = $order_products; 
} 

print_r($orders); 
Смежные вопросы