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 éclairé
    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
    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 Expert
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    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 éclairé
    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
    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 confirmé
    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
    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
    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 !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    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 éclairé
    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
    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 Expert
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    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 confirmé
    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
    Par défaut
    il faudrait ton code pour mieux comprendre mais... Probalement qu'un petit fetch_array pourrait t'aider!

  10. #10
    Membre éclairé
    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
    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 confirmé
    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
    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 : 40
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    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 ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

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, 14h46
  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, 13h00
  3. [débutant] Somme des éléments d'un tableau
    Par Kazuhiko$ dans le forum Caml
    Réponses: 5
    Dernier message: 19/11/2008, 11h29
  4. somme des éléments d'une matrice
    Par virginie999 dans le forum MATLAB
    Réponses: 3
    Dernier message: 13/06/2008, 21h14
  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, 10h35

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