Probleme tableaux php

adeb -  
 adeb -
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. jjsteing Messages postés 1613 Date d'inscription   Statut Contributeur Dernière intervention   181
     
    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
  2. adeb
     
    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
  3. jjsteing Messages postés 1613 Date d'inscription   Statut Contributeur Dernière intervention   181
     
    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
  4. adeb
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. adeb
     
    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
  7. jjsteing Messages postés 1613 Date d'inscription   Statut Contributeur Dernière intervention   181
     
    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
  8. jjsteing Messages postés 1613 Date d'inscription   Statut Contributeur Dernière intervention   181
     
    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
  9. adeb
     
    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
  10. jjsteing Messages postés 1613 Date d'inscription   Statut Contributeur Dernière intervention   181
     
    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
  11. jjsteing Messages postés 1613 Date d'inscription   Statut Contributeur Dernière intervention   181
     
    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
  12. adeb
     
    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