Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/04/2011, 18h52   #1
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285
Par défaut Additionner les valeurs de 2 tableaux si clés identiques

Bonjour à tous,

Soient ces 2 tableaux :
Les clés sont des mois, les valeurs des quantités
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
Array
(
    [1] => 140
    [2] => 149
    [3] => 208
)
 
Array
(
    [3] => 7
    [4] => 171
)
Comment additionner leurs valeurs si les clés sont identiques, et dans cet exemple, se retrouver avec :

Code :
1
2
3
4
5
6
7
8
 
Array
(
    [1] => 140
    [2] => 149
    [3] => 215
    [4] => 171
)
J'ai tenté :

Code :
1
2
3
4
5
6
7
8
9
10
 
$fusion = array();
foreach($tab_an1 as $mois=>$qte){
	if(isset($tab_an2[$mois])){
		$fusion[$mois] = $qte + $tab_an2[$mois];
	}else{
		$fusion[$mois] = $qte;
	}
 
}
Mais, et c'est normal, ça n'affiche pas 04. Ca donne :

Code :
1
2
3
4
5
6
7
 
Array
(
    [1] => 140
    [2] => 149
    [3] => 215
)
Une idée ?
Merci d'avance.
renaud26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2011, 19h18   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Code :
1
2
3
4
5
6
7
8
9
10
$fusion = array();
foreach($tab_an1 as $mois=>$qte){
	if(isset($tab_an2[$mois])){
		$fusion[$mois] = $qte + $tab_an2[$mois];
                unset($tab_an2[$mois]);
	}else{
		$fusion[$mois] = $qte;
	}			  
}
array_merge($tab_an1, $tab_an2);
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2011, 19h28   #3
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285
Bonsoir,

Ben, euh...ça, ça flingue les clés et ça ajoute pas.
Et je capte pas le array_merge des 2 tableaux d'entrée.
Il sert à quoi, le tableau fusion[], alors ?

Si je fais le array_merge :

Code :
1
2
 
$new_tab = array_merge($fusion, $tab_an2);
Ca sort le résultat voulu, mais je perds les clés et j'en ai besoin.
renaud26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2011, 19h41   #4
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285
Trouvé !


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
$fusion = fusion($tab_an1, $tab_an2);
print_r($fusion);
 
function fusion(){
  $result = array();
  foreach(func_get_args() as $array){
    foreach($array as $attribute => $value){
      $result[$attribute] += $value;
    }
  }
  return $result;
}
renaud26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h14.


 
 
 
 
Partenaires

Hébergement Web