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. 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);

    }
    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 "-------------------------------";
      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
        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
          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 ?
            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 ??
              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
                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);
                  }

                  ...
                  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]
                    }
                    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
                      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 ?