OVH Cloud OVH Cloud

[debutant] Guillemets et variables

3 réponses
Avatar
Option
Excusez-moi de vous importuner avec une question triviale, mais je suis
complètement embrouillé dans mes guillemets.

A la ligne de la fin: " echo "$line3 ${champs}";
je voudrais obtenir le contenu de la chaîne texte établi dans les variables
du
début et non comme actuellement le nom de la variable.

Merci de toute aide.

xxxxxxxxxxxxx
Mon code:

//chaines txt pour les différentes variables

$var1chaine1=";0;";
$var1chaine2="; ; ; \r\n";

$var2chaine1=";0; ;";
$var2chaine2="; ; \r\n";

$var3chaine1=";0; ; ;";
$var3chaine2="; \r\n";

$var4chaine1=";0; ; ; ;";
$var4chaine2="\r\n";


$vr = 1;
$tableaulines = file ('txtjasolentr.txt');

foreach ($tableaulines as $line_num => $line) {


$var='$var'.$vr;
$vardebut=$var.'chaine1';
$varfin=$var.'chaine2';


$line2=explode(" ",$line);
$i = 1;
foreach ($line2 as $line_num => $line3) {
$champs="$vardebut $i $varfin";
echo "$line3 ${champs}";
$i++;
}

$vr++;
}

3 réponses

Avatar
Guillaume Bouchard
Option wrote:
Excusez-moi de vous importuner avec une question triviale, mais je suis
complètement embrouillé dans mes guillemets.


Si elle était trivial, un gentil modérateur te l'aurait faire savoir
très rapidement. Donc ta question ne l'ai pas.

A la ligne de la fin: " echo "$line3 ${champs}";
je voudrais obtenir le contenu de la chaîne texte établi dans les variables
du
début et non comme actuellement le nom de la variable.


Oula, je sais qu'il est tard (Je l'avais promi, couché avant minuit ce
soir !!) mais j'ai du mal a comprendre ta phrase.

$var1chaine1=";0;";
$var1chaine2="; ; ; rn";

$var2chaine1=";0; ;";
$var2chaine2="; ; rn";

$var3chaine1=";0; ; ;";
$var3chaine2="; rn";

$var4chaine1=";0; ; ; ;";
$var4chaine2="rn";


Hoo galère !!! Utilise des tableaux je t'en conjure !

<?php
$truc = array();
$truc[1] = array(1 => ";0;", "; ; ; rn");
$truc[2] = array(1 => ";0; ;", "; ; rn");
$truc[3] = array(1 => ";0; ; ;", "; rn");
$truc[4] = array(1 => ";0; ; ; ;","rn");
?>

Maitenant tu accedes à tes var via

$truc[1][2] pour $var1chaine2.
Dans le cas general, évite les "varvar" et préfere les tableaux.

Sinon, je suis curieux, c'est pour quoi ce truc ?

$vr = 1;
$tableaulines = file ('txtjasolentr.txt');


À l'avenir quand tu demanderas de l'aide, précise la syntaxe de ton
fichier, mon Mog (une bestiole sympa qui remplace de façon bénéfique les
boules de cristal) est fatigué...

foreach ($tableaulines as $line_num => $line) {


Si tu ne te sers pas de $line_num, utilise :

foreach($tableaulines as $line){

$var='$var'.$vr;
$vardebut=$var.'chaine1';
$varfin=$var.'chaine2';


$vardebut = $truc[$vr][1];
$varfin = $truc[$vr][2];

$line2=explode(" ",$line);
$i = 1;
foreach ($line2 as $line_num => $line3) {
$champs="$vardebut $i $varfin";


On ne dira rien, mais je trouve plus lisible : $champs = $vardebut,'
',$i,' ',$varfin;
Question de gout.

echo "$line3 ${champs}";



Bon, j'avoue que ton script c'est le bordel, je n'y comprend rien et
c'est illisible.

- Esseye de faire sauter les "varvar" au profit de tableaux indicés.
- Ajoute error_reperting(E_ALL); en debut de script, tu auras surement
quelques surprises interessantes.
- Evite dans la mesure du possible d'utiliser les variables dans les
chaines. C'est un bon exemple ici, cela t'affiche quelque chose car la
variable en question ne doit pas exister. Tu serais en dehors de la
chaine, tu aurais un message d'erreur avec un geule plus comprehensible.

Bonne chance.

--
Guillaume.

Avatar
Option
Je me rends compte que ma question était imprécise, mais tu l'as résolue.

Au moment de " echo "$line3".$champs;", mon micmac renvoyait pour $champs
par ex: "$var1chaine11$var1chaine2", c'est-à-dire le nom de la variable au
lieu de son contenu: ";0;1; ; ;".

Avec ta solution par tableaux, tout marche correctement. Je ne comprends pas
pourquoi. Si tu as 5 minutes (pas forcément à minuit ;)) explique-moi
stp pourquoi en une phrase, comment PHP gère les noms de variables.

En tout cas, merci infiniment, puisque la méthode que j'avais adoptée ne me
conduisait absolument à rien.

Bien cordialement
Avatar
Guillaume Bouchard
Option wrote:
Je me rends compte que ma question était imprécise, mais tu l'as résolue.


Mon mog fonctionne donc bien, c'est positif.

Au moment de " echo "$line3".$champs;", mon micmac renvoyait pour $champs
par ex: "$var1chaine11$var1chaine2", c'est-à-dire le nom de la variable au
lieu de son contenu: ";0;1; ; ;".


Normal
$champs="$vardebut $i $varfin"; --> $var1chaine11$var1chaine2
car $vardebut contient '$var1chaine1'
$i contient '1'
$varfin content '$var1chaine2'

Avec ta solution par tableaux, tout marche correctement. Je ne comprends pas
pourquoi. Si tu as 5 minutes (pas forcément à minuit ;)) explique-moi
stp pourquoi en une phrase, comment PHP gère les noms de variables.


Hum. Php gere les noms de variables comme tout le monde. Dans le cas ici
tu lui demandes d'afficher le nom, il l'affiche. Si tu avais voulu le
contenu de la variable, il aurait falue faire

echo $$champs

En tout cas, merci infiniment, puisque la méthode que j'avais adoptée ne me
conduisait absolument à rien.


Et est à éviter au maximum, les varvar l'on s'en sert une fois l'an (et
encore...)

Bonne continuation.

--
Guillaume.