合并 php 中具有重复值的多维数组

Merge multidimensional array in php with duplicate values

如您所见,我有一个包含重复 orderid 的数组 因为一个订单可以有多个 stockitems(stockitemname)。我怎样才能合并数组,以便对总字段求和,orderid 不再重复,所有 stockitemnames 都放在同一个 orderId 下?

有没有人有办法解决这个问题?

Array ( [0] => Array 
       ([orderId] => 1544100294 
        [total] => 215.28 
        [receivedate] => 0000-00-00 
        [stockitemname] => "The Gu" red shirt XML tag t-shirt (White) XXS 
        [customerid] => 10 ) 
    [1] => Array 
       ( [orderId] => 1544119651 
        [total] => 37.38 
        [receivedate] => 0000-00-00 
        [stockitemname] => USB rocket launcher (Gray) 
        [customerid] => 10 ) 
    [2] => Array 
        ( [orderId] => 1544100294 
        [total] => 1614.60 
        [receivedate] => 0000-00-00 
        [stockitemname] => Large sized bubblewrap roll 50m 
        [customerid] => 10 ) )

数组是根据此查询的结果创建的:

SELECT oc.orderId, SUM(so.quantity*si.RecommendedRetailPrice) total, oc.receivedate, si.stockitemname, ru.customerid
FROM orderbycustomers oc 
JOIN registered_users ru 
ON oc.customerid = ru.customerid 
JOIN stockitemorders so 
ON oc.orderId = so.orderId 
JOIN stockitems si 
ON so.StockItemID = si.StockItemID
WHERE oc.customerid = $customerid
GROUP BY si.stockitemname
ORDER BY oc.receivedate

order 中收集 stockitems 的一种方法可能是这样的:

<?php
 $result = [];
 foreach ($ordersFromQuery as $order) {
   $result[$order['orderId']][] = $order;
 }
?>

unique array.

中获得具有相同 idstockitems 的另一种方法
<?php

 $input = Array ( Array 
       ('orderId' => '1544100294', 
        'total' => 215.28, 
        'receivedate' => '0000-00-00', 
        'stockitemname' => 'The Gu red shirt XML tag t-shirt (White) XXS', 
        'customerid' => 10 ), 
    Array 
       ( 'orderId' => '1544119651', 
        'total' => 37.38, 
        'receivedate' => '0000-00-00', 
        'stockitemname' => 'USB rocket launcher (Gray)', 
        'customerid' => 10 ),
    Array 
        ( 'orderId' => '1544100294', 
        'total' => 1614.60, 
        'receivedate' => '0000-00-00', 
        'stockitemname' => 'Large sized bubblewrap roll 50m', 
        'customerid' => 10 ) );

 // New array using orderId as the key
 $output = array();

 foreach ($input as $values) {
    // Define your key
    $key = $values['orderId'];
    // Assign to the new array using all of the actual values
    $output[$key][] = $values;
 }

 // Get all values inside the array, but without orderId in the keys:
 $output = array_values($output);

 // Print the new array
 print_r($output);
?>

Here 你可以看到它正在运行!