За последние 24 часа нас посетил 22621 программист и 1006 роботов. Сейчас ищут 727 программистов ...

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

Тема в разделе "PHP для новичков", создана пользователем Nubcoder32, 8 май 2021.

  1. Nubcoder32

    Nubcoder32 Новичок

    С нами с:
    23 мар 2021
    Сообщения:
    27
    Симпатии:
    0
    Доброго времени суток, есть массив
    Код (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. )
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.745
    Симпатии:
    1.321
    Адрес:
    Лень
    откуда данные получаешь ?
    --- Добавлено ---
    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 находится первозначимым
     
  3. Nubcoder32

    Nubcoder32 Новичок

    С нами с:
    23 мар 2021
    Сообщения:
    27
    Симпатии:
    0

    Как то так закрутилось, подскажи пожалуйста нельзя ли реализовать такую группировку на уровне 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.             }
     
  4. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.822
    Симпатии:
    736
    Адрес:
    Татарстан
    Group by - не?