Poster une réponse 
 
Note de cette discussion :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[Résolu] Addition champs array multidimensionnel
Auteur Message
Eluox Hors ligne
Membre

Messages : 935
Inscription : Oct 2007
Réputation : 8
Message : #1
[Résolu] Addition champs array multidimensionnel
Coucou all 1

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é 1

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 1

Merci a ceux qui m'aideront 2

Cordialement,

[Image: eluox010.png]
(Ce message a été modifié le : 08-15-2008 10:31 PM par Eluox.)
08-15-2008 10:15 PM
Visiter le site internet de cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
oxman Hors ligne
Membre

Messages : 746
Inscription : May 2008
Réputation : 10
Message : #2
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
Visiter le site internet de cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
Eluox Hors ligne
Membre

Messages : 935
Inscription : Oct 2007
Réputation : 8
Message : #3
RE: Addition champs array multidimensionnel
Arf, et pourquoi j'y ai pas pensé :/

J'passe pour un con pas doué maitenant 1

Ty oxman,
j'me suis basé sur ta réponse même si dans mon cas c'était pas exactement sa 2

[Image: eluox010.png]
(Ce message a été modifié le : 08-15-2008 10:28 PM par Eluox.)
08-15-2008 10:28 PM
Visiter le site internet de cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
Sephi-Chan Hors ligne
Administrateur
*******

Messages : 4,490
Inscription : Aug 2006
Message : #4
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
Visiter le site internet de cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
oxman Hors ligne
Membre

Messages : 746
Inscription : May 2008
Réputation : 10
Message : #5
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
Visiter le site internet de cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
Sephi-Chan Hors ligne
Administrateur
*******

Messages : 4,490
Inscription : Aug 2006
Message : #6
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
Visiter le site internet de cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
Raoull Hors ligne
Membre

Messages : 460
Inscription : Oct 2006
Réputation : 8
Message : #7
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
Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
oxman Hors ligne
Membre

Messages : 746
Inscription : May 2008
Réputation : 10
Message : #8
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
Visiter le site internet de cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
Sephi-Chan Hors ligne
Administrateur
*******

Messages : 4,490
Inscription : Aug 2006
Message : #9
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. 2


Sephi-Chan

www.sephi-chan.fr
08-16-2008 12:24 AM
Visiter le site internet de cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
Raoull Hors ligne
Membre

Messages : 460
Inscription : Oct 2006
Réputation : 8
Message : #10
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
Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
Poster une réponse 



ContactJeuWeb (JeuPHP) - Crée ton jeu par navigateurRetourner en hautRetourner au contenuVersion bas-débit (Archivé)Syndication RSS