Как я могу добавить все столбчатые значения по ассоциативному ключу? Обратите внимание, что наборы ключей динамические.
Входной массив:
Array
(
[0] => Array
(
[gozhi] => 2
[uzorong] => 1
[ngangla] => 4
[langthel] => 5
)
[1] => Array
(
[gozhi] => 5
[uzorong] => 0
[ngangla] => 3
[langthel] => 2
)
[2] => Array
(
[gozhi] => 3
[uzorong] => 0
[ngangla] => 1
[langthel] => 3
)
)
Желаемый результат:
Array
(
[gozhi] => 10
[uzorong] => 1
[ngangla] => 8
[langthel] => 10
)
php
arrays
multidimensional-array
sum
marknt15
источник
источник
Ответы:
источник
n
массивы, воспользуйтесь этим решением .Вы можете использовать его
array_walk_recursive()
для получения общего решения вашей проблемы ( когда каждый внутренний массив может иметь уникальные ключи ).Пример с
array_walk_recursive()
для общего случаяКроме того, начиная с PHP 5.5 вы можете использовать эту
array_column()
функцию для достижения желаемого результата для точного ключа ,[gozhi]
например:Пример с
array_column()
для указанного ключаЕсли вы хотите получить общую сумму всех внутренних массивов с одинаковыми ключами ( желаемый результат, который вы опубликовали ), вы можете сделать что-то вроде этого ( помня, что первый внутренний массив должен иметь ту же структуру, что и другие ):
Пример
array_column()
в случае, если все внутренние массивы имеют одинаковые ключиЕсли вам нужно решение для общего случая, используя
array_column()
сначала вы можете рассмотреть возможность получения всех уникальных ключей, а затем получить сумму для каждого ключа:Пример с
array_column()
для общего случаяисточник
Используйте этот фрагмент:
источник
Вот решение, аналогичное двум другим:
Но при этом не нужно проверять, существуют ли уже ключи массива, и при этом не генерируются уведомления.
источник
Это также можно сделать с помощью
array_map
:источник
источник
Другая версия, с некоторыми преимуществами ниже.
Я хотел объединить лучшее из ответов Gumbo, Graviton и Chris J со следующими целями, чтобы я мог использовать это в своем приложении:
a) Инициализируйте ключи массива «сумма» вне цикла (Gumbo). Должно помочь с производительностью на очень больших массивах (еще не проверено!). Устраняет уведомления.
б) Основная логика легко понять, не обращаясь к руководствам. (Гравитон, Крис Дж.).
c) Решить более общую проблему сложения значений любых двух массивов с одинаковыми ключами и сделать его менее зависимым от структуры подмассива.
В отличие от решения Gumbo, вы можете повторно использовать это в случаях, когда значения не находятся в подмассивах. Представьте , в приведенном ниже примере , что
$arr1
и$arr2
не жестко, но возвращается как результат вызова функции внутри цикла.источник
Это также можно сделать с помощью
array_walk
:Не так читабельно, как предыдущие решения, но работает :)
источник
Вот версия, в которой ключи массива могут быть разными для обоих массивов, но вы хотите, чтобы все они присутствовали в конечном массиве.
источник
Сначала нам нужно проверить, существует ли ключ массива.
КОД:
ВЫХОД с проверкой ключа массива:
ВЫВОД без проверки ключа массива:
Это плохая практика, хотя вывод распечатывается. Всегда сначала проверяйте, существует ли ключ.
источник
Для тех, кто попал сюда и ищет решение, которое объединяет N массивов И также суммирует значения идентичных ключей, найденных в N массивах, я написал эту функцию, которая также работает рекурсивно. (См .: https://gist.github.com/Nickology/f700e319cbafab5eaedc )
Пример:
Результатом будет:
Вот код:
источник
Пройдитесь по каждому элементу массива и суммируйте значения с предыдущими значениями, если они существуют, если не просто присвойте значение.
Вывод:
Или просто прокрутите каждый подмассив и сгруппируйте значения для каждого столбца. В итоге их суммируем:
источник
Вот как я обычно делаю подобные операции.
источник
Вы можете попробовать это:
и наконец:
источник
$a
и$b
когда звонитеarray_map()
? Пожалуйста, улучшите этот ответ, содержащий только код.это отлично работает в моем проекте laravel
источник
источник
источник
Например, вы можете извлечь все поля из результата, подобного приведенному ниже.
Я выбираю «баланс» из массива и сохраняю его в переменной
тогда в следующей строке вы можете суммировать следующим образом:
Надеюсь, поможет.
источник