Comment la somme de toutes les valeurs de colonne dans un tableau multi-dimensionnel?
Comment puis-je ajouter toutes les colonnes des valeurs par clé associative? Notez que [gozhi]
clé est dynamique.
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 souhaité :
Array
(
[gozhi] => 10
[uzorong] => 1
[ngangla] => 8
[langthel] => 10
)
- Pour une commune de la situation, deux multidimension tableaux ont pas exactement les mêmes touches. fusion/somme multiples dimensions de la matrice de php
Vous devez vous connecter pour publier un commentaire.
n
des tableaux, utiliser les cette solution.Vous pouvez utiliser
array_walk_recursive()
pour obtenir un cas la solution à votre problème (l'un lors de chaque intérieur tableau peut éventuellement avoir des clés uniques).Exemple
array_walk_recursive()
pour le cas généralAussi, depuis PHP 5.5 vous pouvez utiliser le
array_column()
fonction pour obtenir le résultat que vous souhaitez pour la clé exacte,[gozhi]
, par exemple :Exemple
array_column()
pour la clé spécifiéeSi vous voulez obtenir la somme totale de toutes les intérieurs des tableaux avec les mêmes touches (le résultat désiré que vous avez posté), vous pouvez faire quelque chose comme ceci (en gardant à l'esprit que la première intérieure de la matrice doit avoir la même structure que les autres) :
Exemple
array_column()
dans le cas où tous les intérieurs tableaux ont la même touchesSi vous voulez un général-cas de la solution à l'aide de
array_column()
puis au premier, vous pouvez envisager d'obtenir toutes les clés uniques , et ensuite obtenir la somme pour chaque touche :Exemple
array_column()
pour le cas généralVoici une solution similaire pour les deux autres:
Mais ce n'est pas nécessaire de vérifier si le tableau de clés existent déjà et ne jette pas d'avis non plus.
Il peut aussi être fait en utilisant
array_map
:L'utilisation de cet extrait:
Une autre version, avec quelques avantages ci-dessous.
J'ai voulu combiner le meilleur de Gumbo, de Graviton, et Chris J de réponse, avec les objectifs suivants afin que je puisse l'utiliser dans mon application:
a) Initialiser la "somme" de la matrice de touches à l'extérieur de la boucle (Gumbo). Devrait aider avec des performances sur de très grands tableaux (pas encore testé!). Élimine les avis.
b) les Principaux logique est facile à comprendre sans heurter les manuels. (Le Graviton, Chris J).
c) Résoudre le problème plus général de l'ajout des valeurs des deux tableaux avec la même clé et la rendre moins dépendante de la sous-structure du tableau.
Contrairement à Gumbo de la solution, il est possible de réutiliser ce 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ées en dur, mais sont retournés comme le résultat de l'appel d'une fonction à l'intérieur d'une boucle.Il peut aussi être fait en utilisant
array_walk
:Pas si lisible comme solutions précédentes, mais il fonctionne 🙂
Voici une version où la matrice de touches peuvent ne pas être les mêmes pour les deux tableaux, mais vous veux tous à être là, dans le tableau final.
Nous avons besoin de vérifier d'abord si le tableau de la clé n'existe pas.
CODE:
SORTIE Avec la Clé du Tableau de Validation:
SORTIE Sans Clé du Tableau de Validation:
C'est une mauvaise pratique, bien qu'il imprime à la sortie. Toujours vérifier d'abord si la clé n'existe pas.
Pour ceux qui ont débarqué ici et sont à la recherche d'une solution qui fusionne N tableaux ET également à la somme des valeurs de clés identiques trouvés dans le N tableaux, j'ai écrit cette fonction qui fonctionne de manière récursive ainsi. (Voir: https://gist.github.com/Nickology/f700e319cbafab5eaedc)
Exemple:
Permettra:
Voici le code:
Vous avez ici la façon dont j'ai l'habitude de faire ce genre d'opérations.
Vous pouvez essayer ceci:
et enfin:
$a
et$b
lorsque vous appelezarray_map()
? Veuillez améliorer ce code seule réponse.cela fonctionne très bien sur mon laravel projet
Par exemple, vous pouvez arracher tous les domaines à partir d'un résultat de ce genre ci-dessous.
Je suis de la cueillette à l'équilibre à partir d'un tableau et de les enregistrer dans une variable
puis sur la ligne suivante u peux résumer comme ceci:
Espère que cela aide.