IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Somme des éléments de mon array


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 394
    Points : 347
    Points
    347
    Par défaut Somme des éléments de mon array
    Bonjour;


    J'aurais voulu savoir comment on peut additionner les valeurs des éléments de mon $teb qui ont la même clé de cette façon.

    supposons que pour une clé identique aura 4 valeurs ça pourrait être + :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?php
     
    $tab = array (
     
    'k1' => v1,
    'k1' => v2,
    'k1' => v3,
    'k1' => v4,
     
    'k2' => v5
    'k2' => v6,
    'k2' => v7,
    'k2' => v8,
     
    'k3' => v9,
    .......
    );
    Je souhaite avoir un tableau qui a pour clés : k1; k2; k3......... et pour valeur la somme des valeurs de chaque clé :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $nouveauTab = array (
     
    'k1'  =>  v1+v2+v3+v4,
    'k2'  =>  v5+v6+v7+v8,
    'k3'  =>  v9+.......
     
    );
    Merci pour votre aide !

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    j'ai trouvé ceci en commentaire de ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    $array1 = array('1'=>'1','2'=>'2','3'=>'3');
    $array2 = array(         '2'=>'1','3'=>'2','4'=>'3');
    $array3 = array(                  '3'=>'1','4'=>'2','5'=>'3');
    $array  = array_sum_values( $array1, $array2, $array3 );
    print_r($array);
     
    /**
     * Sums the values of the arrays be there keys (PHP 4, PHP 5)
     * array array_sum_values ( array array1 [, array array2 [, array ...]] )
     */
    function array_sum_values() {
        $return = array();
        $intArgs = func_num_args();
        $arrArgs = func_get_args();
        if($intArgs < 1) trigger_error('Warning: Wrong parameter count for array_sum_values()', E_USER_WARNING);
     
        foreach($arrArgs as $arrItem) {
            if(!is_array($arrItem)) trigger_error('Warning: Wrong parameter values for array_sum_values()', E_USER_WARNING);
            foreach($arrItem as $k => $v) {
                $return[$k] += $v;
            }
        }
        return $return;
    }
    /* result:
    Array
    (
        [1] => 1
        [2] => 3
        [3] => 6
        [4] => 5
        [5] => 3
    )
    */
    Bien sur on ne peut pas avoir 4 clefs identiques dans un tableau donc je suppose que tu cherches a faire la somme par clef de 4 tableaux

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 394
    Points : 347
    Points
    347
    Par défaut
    Merci je l'avais essayer ca ne m'aide pas, j'ai un seul tableau dds clés identiques et je dois additionner les valeurs de la même clé !!

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 28
    Points : 44
    Points
    44
    Par défaut
    Tes premiere lignes de code me semble incorrecte, tu écrases la valeur de ton K1 à chaque fois que tu y ajoute une valeur.

    Il y aurais probablement des manières dynamiques de faire ce que tu fais mais tu sembles commencer alors..

    Essaie ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?php
     
    $tab = array (
     
    'k1' => v1,
    'k1' => 'k1 '+ v2,
    'k1' => 'k1' + v3,
    'k1' => 'k1' + v4,
     
    'k2' => 'k2' + v5
    'k2' => 'k2' + v6,
    'k2' => 'k2' + v7,
    'k2' => 'k2' + v8,
     
    'k3' => v9,
    .......
    );
    Bonne chance!

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Mais tu ne peux pas avoir plusieurs fois la même clé dans un même tableau !

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    C'est juste impossible d'avoir plusieurs fois la même clef.
    le code de TiMass ne marche pas non plus , les clefs du tableau sont mal manipulées.
    soit tu fais comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $tab['k1'] = v1;
    $tab['k1'] += v2; //equivaut a $tab['k1'] = $tab['k1'] + v2;
    $tab['k1'] += v3 //etc...
    soit comme dans ton énoncé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $nouveauTab = array (
     
    'k1'  =>  v1+v2+v3+v4,
    'k2'  =>  v5+v6+v7+v8,
    'k3'  =>  v9+.......
     
    );

  7. #7
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 394
    Points : 347
    Points
    347
    Par défaut
    OK trés bien mais justement c'est un résultat d'une requête SQL : qui me donne plusieurs valeurs pour une clé :S

    Du coup je peux avoir n valeurs pour la clé k1, k2 ...etc

    je ne vais pas changer le code a chaque fois :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $tab['k1'] = v1;
    $tab['k1'] += v2;
    $tab['k1'] += v3 
     
    ....
    $tab['k1'] += vn
    d'une maniére générale on pourra faire quoi ??

  8. #8
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    quel est le code de parcours de ta requête ducoup?
    il y'a trois solutions mais seulement deux peuvent etre adaptés dynamiquement

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 28
    Points : 44
    Points
    44
    Par défaut
    il faudrait ton code pour mieux comprendre mais... Probalement qu'un petit fetch_array pourrait t'aider!

  10. #10
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 394
    Points : 347
    Points
    347
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?php  
    $reqL = mysql_query($req);
    while ($dataR=mysql_fetch_array($reqL)) {
              if ($dataR["isAx"]== 1) {
     
                switch ($dataR["type"]) {
                    case "text/css":
                        $tab1[] = $dataR;
                        break;
                    case "text/html":
                        $tab2[] = $dataR;
                        break;
                     case "application/javascript":
                     case "application/x-javascript":
                     case "text/javascript":
                        $tab3[] = $dataR;
    }
    }
    var_dump ($tab3) => des clé identiques du (même champ) et des valeurs différentes d'ou aux 3 types "application/javascript": "application/x-javascript", "text/javascript moi je veux un seul type javascript je dois additionner les valeurs de la même clé

  11. #11
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    quand tu dis "additionner les valeurs de la même clé", c'est bancal, car $dataR est un tableau... et $tab1 est un tableau de tableaux, de même pour les autres $tab.
    Tu es sûr de toi de vouloir faire l'équivalent de array() + array() ?
    Tu ne voudrais pas plutôt additionner les valeurs pour les même clés entre les $dataR ?
    Poste un exemple de contenu de $dataR et indique quelles valeurs tu veux additionner.

  12. #12
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Si tes données viennent d'une requête SQL, ne peux-tu faire les sommes au niveau de la requête ?

Discussions similaires

  1. Somme des éléments d'un tableau
    Par thouraya24 dans le forum x86 16-bits
    Réponses: 2
    Dernier message: 09/03/2009, 15h46
  2. Somme des éléments d'un vecteur
    Par acacia dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 16/02/2009, 14h00
  3. [débutant] Somme des éléments d'un tableau
    Par Kazuhiko$ dans le forum Caml
    Réponses: 5
    Dernier message: 19/11/2008, 12h29
  4. somme des éléments d'une matrice
    Par virginie999 dans le forum MATLAB
    Réponses: 3
    Dernier message: 13/06/2008, 22h14
  5. Affichage des éléments d'un array
    Par L'aigle de Carthage dans le forum Langage
    Réponses: 5
    Dernier message: 06/05/2008, 11h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo