Comment puis-je ajouter toutes les valeurs en colonnes par clé associative? Notez que les jeux de clés sont dynamiques.
Tableau d'entrée:
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
)
)
Résultat désiré:
Array
(
[gozhi] => 10
[uzorong] => 1
[ngangla] => 8
[langthel] => 10
)
php
arrays
multidimensional-array
sum
marknt15
la source
la source
Réponses:
la source
n
tableaux, utilisez cette solution .Vous pouvez utiliser
array_walk_recursive()
pour obtenir une solution générale à votre problème ( celle où chaque tableau interne peut éventuellement avoir des clés uniques ).Exemple avec
array_walk_recursive()
pour le cas généralEn outre, depuis PHP 5.5 , vous pouvez utiliser la
array_column()
fonction pour obtenir le résultat souhaité pour la clé exacte ,[gozhi]
par exemple:Exemple avec
array_column()
pour la clé spécifiéeSi vous voulez obtenir la somme totale de tous les tableaux internes avec les mêmes clés ( le résultat souhaité que vous avez publié ), vous pouvez faire quelque chose comme ceci (en gardant à l'esprit que le premier tableau interne doit avoir la même structure que les autres ):
Exemple avec
array_column()
au cas où tous les tableaux internes ont les mêmes clésSi vous voulez une solution de cas général en utilisant,
array_column()
vous pouvez d'abord envisager d'obtenir toutes les clés uniques, puis obtenir la somme pour chaque clé:Exemple avec
array_column()
pour le cas généralla source
Utilisez cet extrait:
la source
Voici une solution similaire aux deux autres:
Mais cela n'a pas besoin de vérifier si les clés du tableau existent déjà et ne lance pas non plus d'avis.
la source
Cela peut également être fait en utilisant
array_map
:la source
la source
Une autre version, avec quelques avantages ci-dessous.
Je voulais combiner le meilleur des réponses de Gumbo, Graviton et Chris J avec les objectifs suivants afin de pouvoir l'utiliser dans mon application:
a) Initialisez les clés du tableau 'sum' en dehors de la boucle (Gumbo). Cela devrait améliorer les performances sur de très grands tableaux (pas encore testés!). Élimine les avis.
b) La logique principale est facile à comprendre sans toucher aux manuels. (Graviton, Chris J).
c) Résoudre le problème plus général de l'addition des valeurs de deux tableaux quelconques avec les mêmes clés et le rendre moins dépendant de la structure du sous-tableau.
Contrairement à la solution de Gumbo, vous pouvez la réutiliser dans les cas où les valeurs ne sont pas dans des sous-tableaux. Imaginez dans l'exemple ci - dessous que
$arr1
et$arr2
ne sont pas codés en dur, mais sont retournés à la suite d'appeler une fonction dans une boucle.la source
Cela peut également être fait en utilisant
array_walk
:Pas si lisible que les solutions précédentes mais ça marche :)
la source
Voici une version où les clés du tableau peuvent ne pas être les mêmes pour les deux tableaux, mais vous voulez qu'elles soient toutes là dans le tableau final.
la source
Nous devons d'abord vérifier si la clé de tableau existe.
CODE:
SORTIE avec validation de clé de tableau:
SORTIE sans validation de clé de tableau:
C'est une mauvaise pratique bien qu'elle imprime la sortie. Vérifiez toujours d'abord si la clé existe.
la source
Pour ceux qui ont atterri ici et recherchent une solution qui fusionne N tableaux ET additionne également les valeurs de clés identiques trouvées dans les N tableaux, j'ai écrit cette fonction qui fonctionne également de manière récursive. (Voir: https://gist.github.com/Nickology/f700e319cbafab5eaedc )
Exemple:
Aura pour résultat:
Voici le code:
la source
Parcourez chaque élément du tableau et additionnez les valeurs aux valeurs précédentes si elles existent, sinon affectez simplement la valeur.
Production:
Ou parcourez simplement chaque sous-tableau et regroupez les valeurs de chaque colonne. En les résumant finalement:
la source
Voici comment je fais habituellement ce genre d'opérations.
la source
Vous pouvez essayer ceci:
et enfin:
la source
$a
et$b
quand vous appelezarray_map()
? Veuillez améliorer cette réponse en code uniquement.cela fonctionne très bien sur mon projet laravel
la source
la source
la source
Par exemple, vous pouvez extraire tous les champs d'un résultat comme celui-ci ci-dessous.
Je choisis le `` solde '' d'un tableau et je l'enregistre dans une variable
puis sur la ligne suivante, vous pouvez résumer comme ceci:
J'espère que ça aide.
la source