Возможна ли группировка массивов на PHP

Nubcoder32

Доброго времени суток, есть массив

Код (Text):
  1. [2] => Array
  2.           (
  3.             [cart_buyerId] => 1
  4.             [cart_productId] => 3907
  5.             [cart_sellerId] => 776
  6.            )
  7.    
  8. [3] => Array
  9.            (
  10.             [cart_buyerId] => 2
  11.             [cart_productId] => 3201
  12.             [cart_sellerId] => 776
  13.            )
  14. [3] => Array
  15.           (
  16.             [cart_buyerId] => 3
  17.             [cart_productId] => 3201
  18.             [cart_sellerId] => 771
  19.            )

Нужно сгруппировать его по cart_sellerId, что бы cart_sellerId был ключом, а внутри то, что к нему относиться, пример:

Код (Text):
  1.  
  2. [776] => Array
  3. (
  4.          [0] => Array (
  5.             [cart_buyerId] => 1
  6.             [cart_productId] => 3907
  7.          )
  8.          [1] => Array (
  9.             [cart_buyerId] => 1
  10.             [cart_productId] => 3907
  11.          )
  12.    
  13. )
  14.    
  15. [771] => Array
  16. (
  17.         [0] => Array (
  18.         [cart_buyerId] => 1
  19.         [cart_productId] => 3201
  20.         )
  21. )
 

MouseZver

откуда данные получаешь ?
— Добавлено —

PHP:
  1. <?php
  2.  
  3. function fetchall_group( array $a ): array
  4. {
  5.     $all = [];
  6.    
  7.     foreach ( $a AS $s )
  8.     {
  9.         $all[array_shift ( $s )][] = $s;
  10.     }
  11.    
  12.     return $all;
  13. }

При этом — если cart_sellerId находится первозначимым

 

Nubcoder32

Как то так закрутилось, подскажи пожалуйста нельзя ли реализовать такую группировку на уровне SQL запроса, что бы не прогонять в цикле

PHP:
  1.         $cartProductArray = R::getAssoc(«SELECT shopping_cart.*, product.*, product_variations.*
  2.                                   FROM shopping_cart
  3.                                   LEFT JOIN product ON product.product_id = shopping_cart.cart_productId
  4.                                   LEFT JOIN product_variations ON product_variations.variation_productId = shopping_cart.cart_productId
  5.                                        AND shopping_cart.cart_variationId IS NOT NULL
  6.                                   WHERE cart_buyerId = ? LIMIT ?
  7.                                   «, [$_SESSION[‘buyer’][‘buyerId’], LIMIT_CART_ITEM]);
  8.  
  9.             $newArrayKey = 0;
  10.             $newProductArray = [];
  11.             foreach ($cartProductArray as $cartProductItem) {
  12.  
  13.                 $newProductArray[$cartProductItem[‘product_sellerId’]][$newArrayKey] = $cartProductItem;
  14.  
  15.             $newArrayKey++;
  16.             }
 

ADSoft

Group by — не?

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *