[PHP] valeur xml dans un tableau [Résolu/Fermé]

Signaler
Messages postés
47
Date d'inscription
dimanche 19 avril 2009
Statut
Membre
Dernière intervention
27 septembre 2010
-
Messages postés
47
Date d'inscription
dimanche 19 avril 2009
Statut
Membre
Dernière intervention
27 septembre 2010
-
Bonjour,

J'ai un fichier xml comme suit :
<?xml version="1.0" encoding="UTF-8"?>

<coefficient>
   <mois>
      <titre>Janvier</titre>
      <valeur>1.4</valeur>
   </mois>
   <mois>
      <titre>Février</titre>
      <valeur>1.3</valeur>
   </mois>
   <mois>
      <titre>Mars</titre>
      <valeur>1.3</valeur>
   </mois>
   <mois>
      <titre>Avril</titre>
      <valeur>1.2</valeur>
   </mois>
   <mois>
      <titre>Mai</titre>
      <valeur>1.1</valeur>
   </mois>
   <mois>
      <titre>Juin</titre>
      <valeur>0.9</valeur>
   </mois>
   <mois>
      <titre>Juillet</titre>
      <valeur>0.7</valeur>
   </mois>
   <mois>
      <titre>Août</titre>
      <valeur>0.6</valeur>
   </mois>
   <mois>
      <titre>Septembre</titre>
      <valeur>0.7</valeur>
   </mois>
   <mois>
      <titre>Octobre</titre>
      <valeur>1</valeur>
   </mois>
   <mois>
      <titre>Novembre</titre>
      <valeur>1.1</valeur>
   </mois>
   <mois>
      <titre>Décembre</titre>
      <valeur>1.2</valeur>
   </mois>
</coefficient>



j'arrive à récupérer les valeur des coefficients, mais je veux les multiplier par une valeur et les stocker dans un tableau mais je n'arrive pas. voilà mon code :

//               lecture du contenu des éléments
$xml = simplexml_load_file("coef.xml");
               foreach ($xml->mois as $cle=>$val){
                  static $i=1;
                 $coef = 87.5;
                  $tab[$i]= $coef * ($val->valeur);
                  echo "<br>";
                  $i++;
               }


merci de m'aider parce que je ne trouve pas l'erreur.

3 réponses

Messages postés
3599
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
16 avril 2020
952
Bonjour,

À chaque itération de ton foreach, tu refais $i=1...
Donc, fatalement, c'est toujours la même case du tableau que tu écrases !

Par ailleurs, je ne vois pas ce que vient faire ce static ici.
Voilà ce que je te suggère :
//    lecture du contenu des éléments
    $xml = simplexml_load_file("coef.xml");
    $i=1;
    $coef = 87.5;
    foreach ($xml->mois as $cle=>$val){
        $tab[$i]= $coef * ($val->valeur);
        echo "<br>";
        $i++;
    }


J'ai sorti le $coef = , car c'est pas super optimisé de refaire la même opération N fois dans ta boucle. Mais ça ne change pas le résultat final.
J'ai laissé le echo "<br>"... mais il est bizarre ^^'

Xavier
Messages postés
47
Date d'inscription
dimanche 19 avril 2009
Statut
Membre
Dernière intervention
27 septembre 2010
15
merci, ça marche mieux mais pas le résultat escompté.

voilà le résultat :
87.5
87.5
87.5
87.5
87.5
0
0
0
0
87.5
87.5
87.5

cela veut dire que une valeur 1.1 dans le XML, il la prend comme 1.
mais quand je met des virgule à la place des points dans mon fichier xml, là j'ai beaucoup de messages d'erreurs.
Messages postés
47
Date d'inscription
dimanche 19 avril 2009
Statut
Membre
Dernière intervention
27 septembre 2010
15
il fallait juste caster en float.

$xml = simplexml_load_file("coef.xml");
    $i=1;
    $coef = 87.5;
    foreach ($xml->mois as $cle=>$val){
        echo $tab[$i]= $coef * (float)($val->valeur);
        echo "<br>";
        $i++;
    }