[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Супер заумное обьединение массивов
Гость_klaster
Доброго всем времени суток. Очень сильно прошу помощи!
Мучаюсь с проклятым массивом...уже часа 3...
Все вроде бы просто.

Есть примерно такой массив
 [0] => Array
(
[машина] => лада
[количество] => 4
[колес_штук] => 1
[сидений_штук] => 0
)

[1] => Array
(
[машина] => москвич
[количество] => 6
[колес_штук] => 2
[сидений_штук] => 3
)

[2] => Array
(
[машина] => лада
[количество] => 3
[колес_штук] => 4
[сидений_штук] => 7
)

[3] => Array
(
[машина] => москвич
[количество] => 4
[колес_штук] => 6
[сидений_штук] => 2
)

[4] => Array
(
[машина] => лада
[количество] => 1
[колес_штук] => 8
[сидений_штук] => 1
)

[5] => Array
(
[машина] => запорожец
[количество] => 2
[колес_штук] => 2
[сидений_штук] => 8
)

[6] => Array
(
[машина] => лада
[количество] => 2
[колес_штук] => 7
[сидений_штук] => 3
)

[7] => Array
(
[машина] => запорожец
[количество] => 0
[колес_штук] => 5
[сидений_штук] => 1
)

[8] => Array
(
[машина] => запорожец
[количество] => 3
[колес_штук] => 7
[сидений_штук] => 9
)




Из него нужно получить такой

	[0] => Array
(
[машина] => лада
[количество] => 10 // сумма всех машин лады с первого массива
[колес_штук] => 20 // сумма всех колес от лады с первого массива
[сидений_штук] => 11 // сумма всех сидений от лады с первого массива
)

[1] => Array
(
[машина] => москвич
[количество] => 10 // ...
[колес_штук] => 8 // ...
[сидений_штук] => 5 // ...
)

[2] => Array
(
[машина] => запорожец
[количество] => 5 // ...
[колес_штук] => 14 // ...
[сидений_штук] => 18 // ...
)


Все!
Пытался придумать алгоритм действий. Получилось ТРИ вложенных цикла и я зашел в тупик.
redreem
$primary = array( 
0 => Array ('model' => 'лада', 'cnt' => 4, 'wheels' => 1, 'sits' => 0),
1 => Array ('model' => 'москвич', 'cnt' => 6, 'wheels' => 2, 'sits' => 3),
2 => Array ('model' => 'лада', 'cnt' => 3, 'wheels' => 4, 'sits' => 7),
3 => Array ('model' => 'москвич', 'cnt' => 4, 'wheels' => 6, 'sits' => 2),
4 => Array ('model' => 'лада', 'cnt' => 1, 'wheels' => 8, 'sits' => 1),
5 => Array ('model' => 'запорожец', 'cnt' => 2, 'wheels' => 2, 'sits' => 8),
6 => Array ('model' => 'лада', 'cnt' => 2, 'wheels' => 7, 'sits' => 3),
7 => Array ('model' => 'запорожец', 'cnt' => 0, 'wheels' => 5, 'sits' => 1),
8 => Array ('model' => 'запорожец', 'cnt' => 3, 'wheels' => 7, 'sits' => 9),
);


$issetArr = array();
$issetArrInv = array();
$secondary = array();

foreach ($primary as $k => $v) {
if (!in_array($v['model'], $issetArr)) {

$issetArr[] = $v['model'];
$index = count($issetArr)-1;
$secondary[$index]['model'] = $v['model'];
$secondary[$index]['cnt'] = $v['cnt'];
$secondary[$index]['wheels'] = $v['wheels'];
$secondary[$index]['sits'] = $v['sits'];
$issetArrInv[$v['model']] = $index;

} else {

$index = $issetArrInv[$v['model']];
$secondary[$index]['cnt'] += $v['cnt'];
$secondary[$index]['wheels'] += $v['wheels'];
$secondary[$index]['sits'] += $v['sits'];

}
}


print_r($secondary);
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.