Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Посчитать суммы значений в многомерном массиве
balambasik  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 19
Пользователь №: 39255
На форуме: 2 года, 8 месяцев, 6 дней
Карма: 1




Всем доброго дня.
Помогите обьединить 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
)

)

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



PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5491
Пользователь №: 35718
На форуме: 4 года, 14 дней
Карма: 167




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

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

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


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
balambasik  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 19
Пользователь №: 39255
На форуме: 2 года, 8 месяцев, 6 дней
Карма: 1




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

Известно что уровень вложенности массива всегда 2, значение всегда число. Как то так.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
balambasik  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 19
Пользователь №: 39255
На форуме: 2 года, 8 месяцев, 6 дней
Карма: 1




Так наглядней
$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;
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Медведь  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 2482
Пользователь №: 37963
На форуме: 3 года, 3 месяца, 23 дня
Карма: 27




Valick написал уже foreach в помощь wink.gif


--------------------

Заходил 29.09.2016
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
xlebosol  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Знатный быдлокодер
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 337
Пользователь №: 32761
На форуме: 4 года, 5 месяцев, 14 дней
Карма: 19




$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);


Исходя из структуры массива.
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5491
Пользователь №: 35718
На форуме: 4 года, 14 дней
Карма: 167




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

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


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса