Как сгруппировать и рассчитать массив значений, когда найдены одинаковые два ключа массива - PullRequest
0 голосов
/ 06 марта 2012

У меня есть массив php:

Array ( 
[0] => Array ([electronics] => TV [condition] => GOOD [1] => 100 [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => ) 
[1] => Array ([electronics] => TV [condition] => NOTGOOD [1] => 50 [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => ) 
[2] => Array ([electronics] => AC [condition] => GOOD [1] => 200 [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => ) 
[3] => Array ([electronics] => TV [condition] => GOOD [1] => 50 [2] => 30 [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => ) 
[4] => Array ([electronics] => AC [condition] => GOOD [1] => 50 [2] => 30 [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => ) 
)

Тогда я хочу сгруппировать и вычислить по [электронике] и [условию]. (рассчитывается при обнаружении одинаковых [электроники] и [состояния] в этом массиве). И результат я хочу вот так:

Array ( 
[0] => Array ([electronics] => TV [condition] => GOOD [1] => 150 [2] => 30 [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => ) 
[1] => Array ([electronics] => TV [condition] => NOTGOOD [1] => 50 [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => ) 
[2] => Array ([electronics] => AC [condition] => GOOD [1] => 250 [2] => 30 [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => ) 
)

1 Ответ

0 голосов
/ 06 марта 2012

Это должен быть один из способов сделать это:

$result = array();
foreach ($arrays as $array) {
    $key = $array['electronics'] . $array['condition'];
    foreach ($array as $k => $v) {
        if (is_numeric($k)) {
            $result[$key][$k] += $v;
        } else {
            $result[$key][$k] = $v;
        }
    }
}

$result = array_values($result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...