Probleme tableaux php

Bonjour,

Je suis débutant en PHP et je dois effectuer un tableau.

Je prend les données directement d'Excel. Mon tableaux ($data) contient 2 colonnes : $exch pour le pays et $val pour la valeur.
Le problème c’est qu’il y a plusieurs valeurs pour chaque pays. Je n'arrive pas à additionner les lignes pour avoir la somme des valeurs pour chaque pays.

Merci d'avance

Voici mon code :

for($i=2; $i<count($lines); $i++)
{

$data[$exch]= array(0 /*valeur*/);

$data[$exch][0] += abs($val);

}
Configuration: Windows Vista
Safari 530.5

12 réponses

  1. Contributeur
    Bonjour,

    donc si j'ais bien compris .. tu as

    $data[UnCertainNombreDePays][UneValeur]

    comme :
    $data["france"][0]=12
    $data["france"][1]=18
    $data["france"][2]=25
    $data["belgique"][0]=11
    $data["belgique"][1]=7

    et tu voudrais savoir le total de $data["france"] et le total de $data["belgique"] c'est ca ?
    0
    1. Oui c'est ca mais sans l'index des pays.

      En faite j'ai un tableau excel :

      1 FRANCE 12
      2 ITALIE 4
      3 SUEDE 6
      4 ITALIE 42
      5 FRANCE 2
      6 SUEDE 6....

      que je découpe en ligne $i puis en colonne $v

      for($i=2; $i<count($lines); $i++)
      {
      $v = explode(';', $lines[$i]);

      $exch = $v[4]

      $val = $v[10]

      $DATA[$exch]= array(0/*valeur*/);

      $DATA[$exch][0] += abs($val);
      }

      j'aimerais obtenir
      $DATA[FRANCE][0] = 12+2
      $DATA[ITALIE][0] = 4+42
      ...

      Mais il doit manquer un index quelque part.

      merci d'avance ça fait pas mal de temps que je galère la dessus
      0
      1. Contributeur
        for($i=2; $i<count($lines); $i++)
        {
        $v = explode(';', $lines[$i]);

        $exch = $v[4]

        $val = $v[10]

        $DATA[$exch] += abs($val); // sans le [0]
        }
        0
        1. En faite j'ai besoin du [0] car après j'aimerais faire un tableaux avec d'autre type de valeur :

          for($i=2; $i<count($lines); $i++)
          {
          $v = explode(';', $lines[$i]);

          $exch = $v[4]
          $val1 = $v[10]
          $val2 = $v[11]

          $DATA[$exch]= array(0/*valeur 1*/, 0/*valeur 2*/);

          $DATA[$exch][0] += abs($val1);
          $DATA[$exch][0] += abs($val2);
          }

          ...
          0
          1. Je me suis tromper dans la dernière ligne :

            $DATA[$exch]= array(0/*valeur 1*/, 0/*valeur 2*/);

            $DATA[$exch][0] += abs($val1);
            $DATA[$exch][1] += abs($val2);

            voila...si tu as une idée
            0
            1. Contributeur
              Peut etre un bug ici :

              $DATA[$exch][0] += abs($val1);

              $DATA[$exch][1] += abs($val2);

              je pense que tu ne veux pas que $val1 et $val2 soient additionnés ensemble ??
              0
              1. Contributeur
                ok, ben ca me parrait bien :

                for($i=2; $i<count($lines); $i++)
                {
                $v = explode(';', $lines[$i]);

                $exch = $v[4]
                $val1 = $v[10]
                $val2 = $v[11]

                $DATA[$exch]= array(0/*valeur 1*/, 0/*valeur 2*/);

                $DATA[$exch][0] += abs($val1);
                $DATA[$exch][1] += abs($val2);
                }

                c'est quoi ton bug ?
                0
                1. Le problème c'est que j'obtiens que les premiers valeur :
                  1 FRANCE 12
                  2 ITALIE 4
                  3 SUEDE 6
                  4 ITALIE 42
                  5 FRANCE 2
                  6 SUEDE 6....

                  au lieu d'avoir :
                  $DATA[FRANCE][0] = 12+2
                  $DATA[ITALIE][0] = 4+42

                  j'ai :
                  $DATA[FRANCE][0] = 12
                  $DATA[ITALIE][0] = 4
                  0
                  1. Contributeur
                    essai avec

                    $DATA[$exch][0] = $DATA[$exch][0] + abs($val1);
                    $DATA[$exch][1] = $DATA[$exch][1] + abs($val2);

                    += doit marché.. a moins que je me trompe de langage.. mais bon, la t'est sur qu il additionne :p
                    0
                    1. négatif ! le résultat est le même...
                      0
                      1. Contributeur
                        je pense qu il ne doit pas boucler alors !!
                        essai d'afficher ca : a la fin avant le } du for

                        echo "i=" .$i ."<br>";
                        echo "line=".$lines[$i]."<br>";
                        echo "exch=".$exch."<br>";
                        echo "val1=".$val1."Val2=".$val2."<br>";
                        echo $DATA[$exch][0] += abs($val1);."<br>";
                        echo $DATA[$exch][1] += abs($val2);."<br>";
                        echo "-------------------------------";
                        0
                        1. En faite la solution est évidente :-)

                          for($i=2; $i<count($lines); $i++)
                          {

                          if(!isset($data[$exch]))
                          {
                          $data[$exch]= array(0 /*valeur*/);
                          }

                          $data[$exch][0] += abs($val);

                          }
                          0