Eluox
Membre
Messages : 935
Inscription : Oct 2007
Réputation : 8
|
[Résolu] Addition champs array multidimensionnel
Coucou all
Derrière ce titre un peu barbare, se cache un petit problème, peut-être tout simple a résoudre, mais j'avoue que j'ai pas trouvé
J'ai un array de ce genre ( Résultat du print_r )
Code PHP :
Array ( [0] => Array ( [name => Premier [number] => 5 )
[1] => Array ( [name => Deuxieme [number] => 2 )
[2] => Array ( [name => Dernier [number] => 4 )
Mon problème est que je voudrais additionner les champs number, c'est a dire qu'a la fin je devrais avoir 11 dans l'exemple ci dessus.
et je vois pas trop comment
Merci a ceux qui m'aideront
Cordialement,
(Ce message a été modifié le : 08-15-2008 10:31 PM par Eluox.)
|
|
| 08-15-2008 10:15 PM |
|
oxman
Membre
Messages : 746
Inscription : May 2008
Réputation : 10
|
RE: Addition champs array multidimensionnel
Code PHP :
$sum = 0; foreach($arrays as $array) { foreach($array as $key => $value) { if ($key === 'number') { $sum += $value; } } }
(Ce message a été modifié le : 08-15-2008 10:30 PM par oxman.)
|
|
| 08-15-2008 10:24 PM |
|
Eluox
Membre
Messages : 935
Inscription : Oct 2007
Réputation : 8
|
RE: Addition champs array multidimensionnel
Arf, et pourquoi j'y ai pas pensé :/
J'passe pour un con pas doué maitenant
Ty oxman,
j'me suis basé sur ta réponse même si dans mon cas c'était pas exactement sa
(Ce message a été modifié le : 08-15-2008 10:28 PM par Eluox.)
|
|
| 08-15-2008 10:28 PM |
|
Sephi-Chan
Administrateur
      
Messages : 4,490
Inscription : Aug 2006
|
RE: [Résolu] Addition champs array multidimensionnel
Et comment faire pour additionner toutes les clés identiques automatiquement ? Je me souviens que je souhaitez faire ça pour déterminer les caractéristiques totales d'un personnage, il y a bien longtemps.
Sephi-Chan
www.sephi-chan.fr
|
|
| 08-15-2008 10:39 PM |
|
oxman
Membre
Messages : 746
Inscription : May 2008
Réputation : 10
|
RE: [Résolu] Addition champs array multidimensionnel
Code PHP :
$arrays = array(); $arrays[] = array('name' => 'Premier', 'number' => 5, 'bim' => 2, 'boum' => 3); $arrays[] = array('name' => 'Deuxieme', 'number' => 2, 'bim' => 4, 'boum' => 2); $arrays[] = array('name' => 'Dernier', 'number' => 4, 'bim' => 6, 'boum' => 6);
$sum = array(); foreach($arrays as $array) { foreach($array as $key => $value) { if (is_numeric($value) === TRUE) { if (isset($sum[$key]) === FALSE) { $sum[$key] = 0; }
$sum[$key] += $value; } } }
var_dump($sum);
(Ce message a été modifié le : 08-15-2008 10:44 PM par oxman.)
|
|
| 08-15-2008 10:43 PM |
|
Sephi-Chan
Administrateur
      
Messages : 4,490
Inscription : Aug 2006
|
RE: [Résolu] Addition champs array multidimensionnel
Very nice ! C'est là un script très utile ! Je pense notamment à ceux qui font des jeux de rôle, mais pas seulement !
Sephi-Chan
www.sephi-chan.fr
|
|
| 08-15-2008 10:51 PM |
|
Raoull
Membre
Messages : 460
Inscription : Oct 2006
Réputation : 8
|
RE: [Résolu] Addition champs array multidimensionnel
et array_sum et ses petits amis ? ou au pire un seul for/each avec array_value, me semble que ca serait plus efficace que des for/each en cascade.
Navigateur opera et sa Communauté francophone
(Ce message a été modifié le : 08-16-2008 12:10 AM par Raoull.)
|
|
| 08-16-2008 12:07 AM |
|
oxman
Membre
Messages : 746
Inscription : May 2008
Réputation : 10
|
RE: [Résolu] Addition champs array multidimensionnel
J'ai réfléchis pour voir si il y avait une méthode plus sexy, sans doute que oui, mais elle ne m'a pas sauté au yeux.
Vas-y fait en une avec array_sum, array_values et consort.
Ca ne m'a pas semblé possible, où en se torturant vraiment les méninges peut-être.
|
|
| 08-16-2008 12:17 AM |
|
Sephi-Chan
Administrateur
      
Messages : 4,490
Inscription : Aug 2006
|
RE: [Résolu] Addition champs array multidimensionnel
Moi non plus, je n'avais pas réussi avec array_sum(). Cela pour la simple raison qu'il fait la somme horizontale de la matrice, au lieu d'en faire la somme verticale, comme on cherche à le faire.
Sephi-Chan
www.sephi-chan.fr
|
|
| 08-16-2008 12:24 AM |
|
Raoull
Membre
Messages : 460
Inscription : Oct 2006
Réputation : 8
|
RE: [Résolu] Addition champs array multidimensionnel
'ffectivement, au temps pour moi, c'est pas que je doutais de vos capacités mais je pensais que ct possible d'allier assez simplement array_sum avec une autre fonction array pour du multidimentionnel, mais... on dirait que non.
Reste donc à l'inventer :
Code :
function arraysomme($tab) {
$som = 0;
foreach($tab as $value) {
if (is_array($value))
$som += arraysomme($value);
elseif (is_numeric($value))
$som += $value;
}
return $som;
}
Navigateur opera et sa Communauté francophone
|
|
| 08-16-2008 01:58 AM |
|