Bonjour à tous

Je cherche à additionner des valeurs issues de plusieur tableau provenant d'une boucle

Le code ci dessous me permet d'afficher toutes les données de ma table (je passe la partie sql volontairement)

foreach ($KPIEffectif as $data){
                foreach ($data as $donnees) {
                    foreach ($donnees as $key => $value) {
                        $tab[] = [
                            'Effectifs'=> $value
                        ];
                    }
                }
            }

ce qui me donne comme résultat en faisant un var_dump($tab) (seulement 2 tableau dans mon exemple mais il peut y en avoir plus)

array (size=2)
  0 => 
    array (size=1)
      'Effectifs' => 
        array (size=8)
          'id' => string '2' (length=1)
          'date_update' => string '2022-11-25 11:09:22' (length=19)
          'entite' => string 'NORD' (length=4)
          'ci' => string '666' (length=3)
          'ce' => null
          'cm' => null
          'ex' => null
          'pki' => null
  1 => 
    array (size=1)
      'Effectifs' => 
        array (size=8)
          'id' => string '1' (length=1)
          'date_update' => string '2022-11-25 11:09:27' (length=19)
          'entite' => string 'SUD' (length=3)
          'ci' => string '1000' (length=4)
          'ce' => null
          'cm' => null
          'ex' => null
          'pki' => null
2 => 
 array (size=1)
 ...... 

comment faire pour additionner tous les 'ci' ensemble les 'ce' ensemble ect
je débute dans les tableau PHP et j'ai pas encore tous piger

Ce que j'obtiens

Décrivez vos éventuelles erreurs ou ce que vous obtenez à la place de ce que vous attendez :(

2 réponses


Hello :)

Alors version simple tu peux incrémenter


$sum_values = [];
// etc...

foreach ($KPIEffectif as $data){
    foreach ($data as $donnees) {
        foreach ($donnees as $key => $value) {
            $sum_values['ci'] = $sum_values['ci'] ?? 0 + intval($value['ci']);
            $sum_values['ce'] = $sum_values['ci'] ?? 0 + intval($value['ce']);
            // etc...

            $tab[] = [
                'Effectifs'=> $value
            ];
        }
    }
}

var_dump($sum_values)

Hello

J'ai tester ta méthode mais cela n'a pas fonctionner, par contre j'ai trouver le moyen de faire le calcul à la sortie de la requte masi il me manque encore une étape pour que cela fonctionne car je suis obligé de modifier manuellement le résultat de $tab et j'aimerai qu'il s'incrémente en fonction du nombre de résultat

sql = ("SELECT * FROM vendeur ORDER BY vendeur asc");
            $requete = $this->db->executeQuery($sql);
            $tabResult = [];
            $nbr_sql = $requete->rowCount();
            while ($row = $requete->fetch())
        {
            $tabResult[] =
            [
                //Renvoi vers la requete récupérant les ventes par vendeur
                $vente = $this->vente($row['vendeur']),
            ];

        }

      $tab =[$tabResult[0][0]['vente'],$tabResult[1][0]['vente']]; //Fonctionne pour deux vendeurs
      $sumTab =  array_sum($tab);
      echo($sumTab);