Search code examples
phparraysmultidimensional-arraygroupingsub-array

Group 2d array rows by a column value and form subarrays of the grouped rows


I have the following array

Array
(
    [0] => Array
        (
            [id] => 96
            [shipping_no] => 212755-1
            [part_no] => reterty
            [description] => tyrfyt
            [packaging_type] => PC
        )

    [1] => Array
        (
            [id] => 96
            [shipping_no] => 212755-1
            [part_no] => dftgtryh
            [description] => dfhgfyh
            [packaging_type] => PC
        )

    [2] => Array
        (
            [id] => 97
            [shipping_no] => 212755-2
            [part_no] => ZeoDark
            [description] => s%c%s%c%s
            [packaging_type] => PC
        )

)

How can I group the array by id? Are there any native PHP functions available to do this?

While this approach works, I want to do this using a foreach, since with the above I will get duplicate items, which I'm trying to avoid.

In the above example id has 2 items, so it needs to be inside of the id.


Solution

  • There is no native one, just use a loop.

    $result = array();
    foreach ($data as $element) {
        $result[$element['id']][] = $element;
    }