8768 sujets

Développement web côté serveur, CMS

Pages :
Modérateur
(reprise du message précédent)

a écrit :
Il ressemble plutôt à ça

Il ressemble plutôt à rien. Si c'est ton format, essaie de le modifier en qqch d'exploitable:

<table_xml>
<machin>truc</machin>
<vars>
  <var key="1">2.1</var>
  <var key="2">12.5</var>
  <var key="3">15.8</var>
  <var key="4">35.4</var>
  <var key="5">8.2</var>
  <var key="6">-1.3</var>
</vars>
<machin_chose>lorem</machin_chose>
<bidules>
  <bidule key="1">blabla</bidule>
   … etc.

Si ce n'est pas possible boucler sur des milliers de ligne ne sera pas pertinent en effet.


$var = [];
for ($i = 1; $i <= 100; $i++) { 
  if(!isset($xml->{ 'table_xml' }->{ 'var_'.$i })) {
    $var[$i] = '&#8709;';
    $var_bis[$i]  = '&#8709;';
  }
  else{
    $var[$i]  = (float) $xml->{ 'table_xml' }->{ 'var_'.$i };
    $var_bis[$i] = $var[$i] + 42;
  }
}

echo $var[1];
echo $var_bis[1];
echo $var[2];
echo $var_bis[2];

J'ai pas osé parlé de la structure du xml (qui a pour but normalement de "structurer" un document sous forme de balise)... mais c'est vrai qu'il serait bon de le revoir..
Modérateur
Et si la structure complexe de simplexml_load_string t'embête trop, tu peux faire un:


$xml = json_decode(json_encode($xml));

print_r($xml);
Ce n'est bien sûr pas mon format. Le fichier XML provient d'une autre source, donc je n'ai pas le choix, je le prend comme il est.

Quant à la solution avec le tableau elle ne me plait pas car elle suppose de modifier toutes mes variables finales :

echo $var_1 ;
echo $var_1_bis ;
echo $var_2 ;
echo $var_2_bis ;

en

echo $var[1];
echo $var_bis[1];
echo $var[2];
echo $var_bis[2];

Ce qui, compte tenu du fait que, bien entendu, l'exemple que je vous donne est fortement simplifié par rapport à la réalité du code que j'exploite, je devrais donc faire 10 à 100 fois plus de modifications, pour changer la forme des variables finales, que de simplement ne pas incrémenter du tout ma boucle récupérant les variables à partir du xml. Le but de tout ça reste quand même de gagner du temps.

Dans le pire des cas l'utilisation des variables dynamiques restent selon moi la meilleure solution. Étant donné qu'il n'y a aucune donné sensible dans le fichier xml que j'exploite, je pense que je vais garder cette façon de faire.

Enfin merci quand même.
Modifié par Damien49 (30 Nov 2018 - 18:39)
kustolovic a écrit :
Il ressemble plutôt à ça

Il ressemble plutôt à rien. Si c'est ton format, essaie de le modifier en qqch d'exploitable:


kustolovic a écrit :
Ton code en fait n'a à peu près aucun sens, difficile de t'aider


C'est dur pour les gens qui débutent de se faire traiter ainsi, un peu de courtoisie voyons dont Smiley rolleyes !!?!

Il est primordial de boulder sur le xml, via XmlPath ou autre, ensuite tu t'assures de la qualité de tes variables, une simple boucle foreach peut aider. Hésite pas si tu as des questions! Smiley murf
Les remarques ne me touchent pas, car je ne suis pas responsable de la structure du XML, je le récupère via une source externe par une adresse url privé. Ce fichier XML se met à jour toutes les secondes, mais ce n'est pas moi qui le fabrique.

Ma seule responsabilité est ensuite de l'exploiter comme il est. Depuis peu j'ai la possibilité de récupérer les mêmes données via Json mais c'est pas mieux organisé. ^^
sur ça ?

foreach($xml->table_xml as  $key => $value)
{
   if (strpos(key , 'var_') !== false) {
      // je recupe la value. et je fais mon traitement.
    }
}


J'ai pas bien compris en fait. Va falloir que je réfléchisse à la question, mais je suis passé sur autre chose, je considère mon problème résolu, ayant finalement opté pour les variables dynamiques (et ça marche très bien).
kustolovic a écrit :
Il ressemble plutôt à ça

Il ressemble plutôt à rien. Si c'est ton format, essaie de le modifier en qqch d'exploitable:

....

Si ce n'est pas possible boucler sur des milliers de ligne ne sera pas pertinent en effet.

$var = [];
.;..



Mais enfin, pourquoi êtes vous si critique, Smiley hum la structure appartient au code métier UX/Designer et il faut s'y conforter sinon tout fait le veau-lot !!! Smiley sweatdrop Rt toujours remetrre en cause le code!!! Lustokovic il faut respecter la volumétrie. et je le sais je suis dév entière stack, enfin!!!
Pages :