PHP ajouter de la valeur à l'ensemble existant de la valeur
J'ai actuellement deux tableaux, la clé dans chacun est l'id d'un produit, tandis que la valeur est la quantité:
$array_1 = ([10] => 1, [13] => 3, [27] => 1, [32] => 2);
$array_2 = ([8] => 1, [10] => 1, [12] => 1, [20] => 2, [27] => 1);
Je veux combiner les deux tableau, mais ajouter les valeurs de l'ensemble, où les clés du match. Est-il une méthode pour le faire sans l'itération à travers les tableaux?
En bref, pas. Vous aurez à effectuer une itération. PHP interne de la fusion des fonctions de vérifier les conflits de fusion, mais ne sera pas FAIRE n'importe quoi avec les valeurs fusionnées.
OriginalL'auteur bland_dan | 2011-04-21
Vous devez vous connecter pour publier un commentaire.
Ce qui suit est ma conviction sur le chemin le plus court pour fusionner les deux tableaux. Il peut être intégré dans la fonction que je ne connais pas, mais il va fusionner les deux tableaux en
$array_1
.EDIT-
break
quand on les trouve.EDIT(Merci à KC)
n*m
dans le pire des cas? Ce qui est sur justeforeach($array_1 as $k => $v) { if (isset($array_2[$key])) { /* add */ } else { /* not add */ }
? Se sent beaucoup plus efficace. Vous pouvez désactiver les touches de$array_2
, que déjà trouvé. Le reste$array_2
sont "intacte"touches deComme la réponse à ma question est "non", je suis allé à la suggestion de KC ci-dessus.
Je suis assis corrigé 🙂
OriginalL'auteur Jeff Lambert
PHPs natif de la matrice de fonctions de peu de moyens pour diviser et de groupe, les tableaux, mais une addition n'est pas possible (
array_sum
n'aide pas vraiment).Ainsi, alors que nous sommes à recommander la solution que vous avez spécifiquement n'a pas été demandé, voici un plus court:
OriginalL'auteur mario
"Sans itération" pas de. Même si vous les emballez dans des fonctions telles que
array_map
son une itération (son seul n'est pas visible dans le code lui-même ;))Sur clé unique, cela permettra de le laisser comme il est. Sur deux clés identiques, il va fusionner les deux valeurs dans un tableau. Une solution sympa en PHP5.3
La non-5.3 solution n'est pas moche
Mise à jour:
Si j'ai lu votre question maintenant, je doute, que je comprends ce que tu veux dire par "ajouter les valeurs de l'ensemble". Il ne fait pas beaucoup de sens pour vraiment ajouter un ID de produit et une quantité. Cependant, il suffit de remplacer le
+
ci-dessus avec le fonctionnement de vos besoins 🙂OriginalL'auteur KingCrunch
Vous pouvez simplement utiliser le construit en fonction de fusion pour les tableaux.
array_merge(matrice1,matrice2,array3...);
À l'aide de votre tableau de noms ici est de savoir comment faire
array_merge($array_1 , $array_1);
OriginalL'auteur Timothy Carey
C'est la Fonction:
Prises De Ici
et qui me semble le plus parfait solution.
OriginalL'auteur Arihant Nahata