1

配列ごとに配列を計算することは可能ですか?

たとえば、各の[num]との合計を計算します。[price][group]

Array
(
    [0] => Array
        (
            [group] => Apple
            [num] => 5
            [price] => 10
        )

    [1] => Array
        (
            [group] => Apple
            [num] => 2
            [price] => 8
        )

    [2] => Array
        (
            [group] => Orange
            [num] => 4
            [price] => 6
        )

    [3] => Array
        (
            [group] => Orange
            [num] => 12
            [price] => 24
        )

)

結果は次のようになります。

Array
(
    [0] => Array
        (
            [group] => Apple
            [num] => 7
            [price] => 18
        )

    [1] => Array
        (
            [group] => Orange
            [num] => 16
            [price] => 30
        )
)
4

2 に答える 2

2

単純なループと連想配列がその役割を果たします。

$result = Array();
foreach($array as $row) {
   if(!isset($result[ $row['group'] ])) {
       $result[ $row['group'] ] = $row;
       continue ;
   }
   $result[ $row['group'] ]['num'] += $row['num'];
   $result[ $row['group'] ]['price'] += $row['price'];
}
$result = array_values($result);
于 2013-01-01T12:10:18.673 に答える
1

使用array_reduce()

$reduced = array_reduce($array, function(&$result, $item){
    $result[$item['group']]['num'] += $item['num'];
    $result[$item['group']]['price'] += $item['price'];
    return $result;
});
于 2013-01-01T12:23:42.947 に答える