[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Посчитать суммы значений в многомерном массиве
balambasik
Всем доброго дня.
Помогите обьединить 2 многомерных масссива и подсчитать суммы.
$array1['cars']['bmw'] = 25;
$array1['cars']['mazda'] = 20;
$array1['cars']['opel'] = 8;

$array2['cars']['bmw'] = 84;
$array2['cars']['mazda'] = 38;
$array2['cars']['opel'] = 19;
$array2['cars']['zaporozhec'] = 3;

Хочу получить такой результат:
[cars] => Array
(
[bmw] => 109
[mazda] => 58
[opel] => 27
[zaporozhec] => 3
)

Наверное тут нужна рекурсия, а у меня туговато с ней)
Я обьеденил массивы функцией array_merge_recursive()
$result = array_merge_recursive($array1, $array2);

Получил такой результат:
Array
(
[cars] => Array
(
[bmw] => Array
(
[0] => 25
[1] => 84
)

[mazda] => Array
(
[0] => 20
[1] => 38
)

[opel] => Array
(
[0] => 8
[1] => 19
)

[zaporozhec] => 3
)

)

Дальше ничего немогу придумать.



Valick
Цитата (balambasik @ 29.01.2016 - 10:11)
Дальше ничего немогу придумать.

а чё там думать-то?
foreach по cars и array_sum по значениям массива cars

Но, сильно подозревая что значения взяты из БД, что собственно автоматически и вышеописанное и ваши мерге шмерге возводят в ранг говнокода.

_____________
Стимулятор ~yoomoney - 41001303250491
balambasik
Из бд только один массив.
На самом деле массив слегка больше чем этот biggrin.gif Первый уровень вложенности: 20-50 элементов (имена ключей рандом), второй уровень вложенности: 10-20 элементов (имена ключей рандом).

Известно что уровень вложенности массива всегда 2, значение всегда число. Как то так.
balambasik
Так наглядней
$array1['random_name_key']['random_name_key'] = 25;
$array1['random_name_key']['random_name_key'] = 20;
$array1['random_name_key']['random_name_key'] = 8;
.
.
.

$array1['random_name_key']['random_name_key'] = 8;



$array2['random_name_key']['random_name_key'] = 84;
$array2['random_name_key']['random_name_key'] = 38;
$array2['random_name_key']['random_name_key'] = 19;
.
.
.

$array2['random_name_key']['random_name_key'] = 3;
Миша
Valick написал уже foreach в помощь wink.gif

_____________
Принимаю заказы, писать в ЛС
xlebosol
$array1['cars']['bmw'] = 25;
$array1['cars']['mazda'] = 20;
$array1['cars']['opel'] = 8;

$array2['cars']['bmw'] = 84;
$array2['cars']['mazda'] = 38;
$array2['cars']['opel'] = 19;
$array2['cars']['zaporozhec'] = 3;

$cars = array_merge_recursive($array1, $array2);

$sumCars = array();
if (!empty($cars)) {
foreach (current($cars) as $key => $car) {
$sumCars[$key] = array_sum((array)$car);

}
}

var_dump($sumCars);


Исходя из структуры массива.
Valick
Цитата (balambasik @ 29.01.2016 - 10:38)
Из бд только один массив.

из бд надо получать уже готовый результат, на то она и БД

_____________
Стимулятор ~yoomoney - 41001303250491
Быстрый ответ:

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