¿Cómo puedo agregar todos los valores de columnas por clave asociativa? Tenga en cuenta que los conjuntos de teclas son dinámicos.
Matriz de entrada:
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
)
)
Resultado deseado:
Array
(
[gozhi] => 10
[uzorong] => 1
[ngangla] => 8
[langthel] => 10
)
php
arrays
multidimensional-array
sum
marknt15
fuente
fuente
Respuestas:
fuente
n
matrices, use esta solución .Puede usar
array_walk_recursive()
para obtener una solución de caso general para su problema ( aquella en la que cada matriz interna puede tener claves únicas ).Ejemplo con
array_walk_recursive()
para el caso generalAdemás, dado que PHP 5.5 se puede utilizar la
array_column()
función de lograr el resultado deseado para la clave exacta ,[gozhi]
por ejemplo:Ejemplo con
array_column()
para la clave especificadaSi desea obtener la suma total de todas las matrices internas con las mismas claves ( el resultado deseado que ha publicado ), puede hacer algo como esto ( teniendo en cuenta que la primera matriz interna debe tener la misma estructura que las demás ):
Ejemplo con
array_column()
en caso de que todas las matrices internas tengan las mismas clavesSi desea utilizar una solución de caso general,
array_column()
al principio puede considerar obtener todas las claves únicas y luego obtener la suma de cada clave:Ejemplo con
array_column()
para el caso generalfuente
Utilice este fragmento:
fuente
Aquí hay una solución similar a las otras dos:
Pero esto no necesita verificar si las claves de la matriz ya existen y tampoco arroja avisos.
fuente
También se puede hacer usando
array_map
:fuente
fuente
Otra versión, con algunos beneficios a continuación.
Quería combinar lo mejor de la respuesta de Gumbo, Graviton y Chris J con los siguientes objetivos para poder usar esto en mi aplicación:
a) Inicialice las claves de matriz 'suma' fuera del bucle (Gumbo). Debería ayudar con el rendimiento en matrices muy grandes (¡aún no probado!). Elimina avisos.
b) La lógica principal es fácil de entender sin tener que tocar los manuales. (Graviton, Chris J).
c) Resuelva el problema más general de sumar los valores de dos arreglos cualesquiera con las mismas claves y hacerlo menos dependiente de la estructura del subarreglo.
A diferencia de la solución de Gumbo, puede reutilizar esto en los casos en que los valores no estén en submatrices. Imagínese en el ejemplo siguiente que
$arr1
y$arr2
no están codificados, pero se devuelven como resultado de llamar a una función dentro de un bucle.fuente
También se puede hacer usando
array_walk
:No es tan legible como las soluciones anteriores pero funciona :)
fuente
Aquí hay una versión en la que las claves de la matriz pueden no ser las mismas para ambas matrices, pero desea que todas estén allí en la matriz final.
fuente
Primero debemos verificar si existe una clave de matriz.
CÓDIGO:
SALIDA con validación de clave de matriz:
SALIDA sin validación de clave de matriz:
Esta es una mala práctica aunque imprime la salida. Siempre verifique primero si la clave existe.
fuente
Para aquellos que aterrizaron aquí y están buscando una solución que combine N matrices Y también sume los valores de claves idénticas que se encuentran en las N matrices, escribí esta función que también funciona de forma recursiva. (Ver: https://gist.github.com/Nickology/f700e319cbafab5eaedc )
Ejemplo:
Resultará en:
Aquí está el código:
fuente
Revise cada elemento de la matriz y sume los valores a los valores anteriores si existen, si no, simplemente asigne el valor.
Salida:
O simplemente recorra cada submatriz y agrupe los valores de cada columna. Finalmente resumiéndolos:
fuente
Aquí tienes cómo suelo hacer este tipo de operaciones.
fuente
Puedes probar esto:
y finalmente:
fuente
$a
y$b
cuándo llamasarray_map()
? Mejore esta respuesta de solo código.esto funciona muy bien en mi proyecto laravel
fuente
fuente
fuente
Por ejemplo, puede extraer todos los campos de un resultado como este a continuación.
Estoy seleccionando el 'saldo' de una matriz y lo guardo en una variable
luego en la siguiente línea puedes sumar así:
Espero eso ayude.
fuente