[PHP] valeur xml dans un tableau

Résolu/Fermé
ZMEX Messages postés 47 Date d'inscription dimanche 19 avril 2009 Statut Membre Dernière intervention 27 septembre 2010 - 27 sept. 2010 à 11:42
ZMEX Messages postés 47 Date d'inscription dimanche 19 avril 2009 Statut Membre Dernière intervention 27 septembre 2010 - 27 sept. 2010 à 13:53
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

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 007
27 sept. 2010 à 11:59
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
0
ZMEX Messages postés 47 Date d'inscription dimanche 19 avril 2009 Statut Membre Dernière intervention 27 septembre 2010 16
27 sept. 2010 à 12:12
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.
0
ZMEX Messages postés 47 Date d'inscription dimanche 19 avril 2009 Statut Membre Dernière intervention 27 septembre 2010 16
27 sept. 2010 à 13:53
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++;
    }
0