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 Array multi


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club Avatar de morpheuss
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2013
    Messages : 61
    Points : 29
    Points
    29
    Par défaut Somme Array multi
    Bonjour,

    j'ai dans un tableau les données suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array ("init" => $initacheteur, "prix" => $prix_total);
    • init = initiales de l'acheteur
    • prix = valeur

    voici l'affichage avec print_r de mon array
    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
    35
    36
    37
    38
    Array
    (
        [0] => Array
            (
                [init] => LG
                [prix] => 0
            )
     
        [1] => Array
            (
                [init] => DC
                [prix] => 470
            )
     
        [2] => Array
            (
                [init] => CL
                [prix] => 116.88
            )
     
        [3] => Array
            (
                [init] => CL
                [prix] => 4
            )
     
        [4] => Array
            (
                [init] => LG
                [prix] => 85
            )
     
        [5] => Array
            (
                [init] => LG
                [prix] => 175.44
            )
    etc....
    Je souhaiterais pouvoir faire la somme des valeurs par acheteur, le nombre de fois que je trouve une valeur et le nombre de fois que je trouve la valeur 0

    Donc voir au final
    • LG = 260.44 Nbx=3 Nb0=1
    • DC = 470 Nbx=1 Nb0=0
    • CL = 120.88 Nbx=2 Nb0=0

    Je cherche avec la fonction SUM
    la ligne suivante m'affiche la somme de tous les acheteurs mais comment filtrer par acheteur (par 'init') ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo array_sum(array_column($acheteur, 'prix'))
    D'avance merci pour votre aide.
    Steph

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    il va falloir mettre les mains dans le cambouis, et utiliser une boucle foreach.

  3. #3
    Nouveau membre du Club Avatar de morpheuss
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2013
    Messages : 61
    Points : 29
    Points
    29
    Par défaut
    Oui j'ai bien essayé mais ne trouve pas la solution d'où la demande d'aide sur ce forum


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach ($acheteur as $key => $val) {
        echo "$val[init] = $val[prix]\n<br>";
     
    	$sumtot += $val['prix'];
    }
    Comment faire la somme par acheteur (en fonction de $val[init]) ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    L'ASTUCE est de passer par des array, avec l'init comme index :

    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
    35
    36
    37
    38
    39
    $arr = [
    		['init' => 'LG','prix' => 0],
    		['init' => 'DC','prix' => 470],
    		['init' => 'CL','prix' => 116.88],
    		['init' => 'CL','prix' => 4],
    		['init' => 'LG','prix' => 85],
    		['init' => 'LG','prix' => 0],
    		['init' => 'LG','prix' => 175.44],
    		['init' => 'LG','prix' => 0],
    	];
    //	var_dump( $arr );
     
    $Sum = [];
    $Nbx = [];
    $Nb0 = [];
    foreach( $arr as $data )
    {
    	$init = $data['init'];
    	$prix = floatval($data['prix']);
     
    	if( !isset($Sum[$init]) ) // (NE PAS mettre empty !)
    	{ 
    		$Sum[$init] = 0;
    		$Nbx[$init] = 0;
    		$Nb0[$init] = 0;
    	}
     
    	$Sum[$init] += $prix; // somme
    	$Nbx[$init]++; // nombre
    	if( $prix == 0 )
    	{
    		$Nb0[$init]++; // nombre de 0
    	}
    }
    // Affichage
    foreach( $Sum as $init => $val )
    {
    	echo $init.' = '.$val.' (Nbx='.$Nbx[$init].', Nb0='.$Nb0[$init].')<br/>';
    }
    Ca donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    LG = 260.44 (Nbx=5, Nb0=3)
    DC = 470 (Nbx=1, Nb0=0)
    CL = 120.88 (Nbx=2, Nb0=0)
    Cela dit, je te conseille d'utiliser un IDENTIFIANT plus fiable que "les initiales client" !
    Michel Dupond et Marie Durand ont les mêmes initiales...

  5. #5
    Nouveau membre du Club Avatar de morpheuss
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2013
    Messages : 61
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par jreaux62 Voir le message

    Cela dit, je te conseille d'utiliser un IDENTIFIANT plus fiable que "les initiales client" !
    Michel Dupond et Marie Durand ont les mêmes initiales...
    Super, merci beaucoup.

    Les initiales sont les acheteurs de notre société, nous ne sommes pas beaucoup cela ne cause pas de problème ;-)

    MERCI

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Vertex Arrays : Multy textures
    Par Nikowa dans le forum OpenGL
    Réponses: 3
    Dernier message: 24/05/2009, 05h45
  2. Réponses: 5
    Dernier message: 20/03/2009, 10h31
  3. Array multi dimensionnelle et associative
    Par nico33307 dans le forum Langage
    Réponses: 6
    Dernier message: 09/05/2008, 07h05
  4. array multi niveau dans un form attaché a plusieurs modèles
    Par Acropole dans le forum Ruby on Rails
    Réponses: 0
    Dernier message: 23/12/2007, 15h33
  5. Réponses: 1
    Dernier message: 21/09/2007, 14h42

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