0

I'd like to sum products by the same ref number, but I have 3rd parameter like dimension e.g. (..., 24, 26mm,...) and I can't sum this values only when they have the same dimension. I tried this: Group a multidimensional array by a particular value? but how to sum values? My array looks like this:

Array
(
    [0] => Array
        (
            [0] => 2
            [1] => 790180X
            [2] => 26mm
        )
    [1] => Array
        (
            [0] => 4
            [1] => 762182Z
        )
    [2] => Array
        (
            [0] => 2
            [1] => 072182X
        )
    [3] => Array
        (
            [0] => 4
            [1] => 660122Y
        )
    [4] => Array
        (
            [0] => 2
            [1] => 790180X
            [2] => 24mm
        )
    [5] => Array
        (
            [0] => 1
            [1] => 225160Y
        )
    [6] => Array
        (
            [0] => 1
            [1] => 244160Y
        )
    [7] => Array
        (
            [0] => 1
            [1] => 225160Y
        )
    [8] => Array
        (
            [0] => 8
            [1] => 954120Y
        )
    [9] => Array
        (
            [0] => 3
            [1] => 072182X
        )
)

I'd like to something like this:

Array
(
    [0] => Array
        (
        [0] => 2
        [1] => 790180X
        [2] => 26mm
        )

    [1] => Array
        (
        [0] => 2
        [1] => 790180X
        [2] => 24mm
        )

    [2] => Array
        (
        [0] => 4
        [1] => 762182Z
        )

    [3] => Array
        (
        [0] => 5
        [1] => 072182X
        )

    [4] => Array
        (
        [0] => 4
        [1] => 660122Y
        )

    [5] => Array
        (
        [0] => 2
        [1] => 225160Y
        )

    [6] => Array
        (
        [0] => 1
        [1] => 244160Y
        )

    [7] => Array
        (
        [0] => 8
        [1] => 954120Y
        )
)

The array in short version:

Array               =>  TO =>       Array
(                                   (
    [0] => 2:790180X:26mm           [0] => 2:790180X:26mm
    [1] => 4:762182Z                [1] => 2:790180X:24mm
    [2] => 2:072182X                [2] => 4:762182Z
    [3] => 4:660122Y                [3] => 5:072182X
    [4] => 2:790180X:24mm           [4] => 4:660122Y
    [5] => 1:225160Y                [5] => 2:225160Y
    [6] => 1:244160Y                [6] => 1:244160Y
    [7] => 1:225160Y                [7] => 8:954120Y
    [8] => 8:954120Y                )
    [9] => 3:072182X
)
Community
  • 1
  • 1
Marcos
  • 151
  • 9

1 Answers1

2

Just sum into a new array, using the various "grouping" fields as keys in the new array:

$sums = array();
foreach ($yourarray as $element) {
    $sums[$element['dimension1']][$element['dimension2']]++;
}

For every dimension you need to 'group' by, you add a key to the $sums array.

Marc B
  • 340,537
  • 37
  • 382
  • 468