Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3010 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Afficher le nom d'une variable

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Afficher le nom d'une variable

n°723409
nagadoudi
T nagadoudi, rentre ta finette
Posté le 12-05-2004 à 15:39:16  profilanswer
 

Bonjour,
 
je voudrais récupérer le nom d'une variable sous forme d'une chaîne.
 
Autrement dit, comment programmer ma fonction test() pour obtenir ce résultat :
 
- appel :

$toto = 'plop';
test($toto);


 
- résultat (affichage) :

La variable $toto vaut 'plop'.


Message édité par nagadoudi le 12-05-2004 à 15:39:52
mood
Publicité
Posté le 12-05-2004 à 15:39:16  profilanswer
 

n°723418
Profil sup​primé
Posté le 12-05-2004 à 15:43:02  answer
 


function test($valeur) {
return 'la variable $toto vaut '.$valeur;
}
 
echo test("plop" );


 
en esperant que tu comprennes le mecanisme :)

n°723493
nagadoudi
T nagadoudi, rentre ta finette
Posté le 12-05-2004 à 16:21:25  profilanswer
 

Mon but c d'utiliser la f° avec _+ieurs_ variables !

n°723500
Profil sup​primé
Posté le 12-05-2004 à 16:22:21  answer
 

deja ecrit bien :heink:
 
ensuite ben, tu n'a qu'a rapeller ta fonction plusieur fois :o

n°723505
nagadoudi
T nagadoudi, rentre ta finette
Posté le 12-05-2004 à 16:23:38  profilanswer
 

$toto = 'camembert';
$tata = 'vinasse';
$titi = 'accordéon';
test($toto);
test($tata);
test($titi);
 
-->
La variable $toto vaut 'camembert'.
La variable $tata vaut 'vinasse'.
La variable $titi vaut 'accordéon'.

n°723509
Profil sup​primé
Posté le 12-05-2004 à 16:24:14  answer
 

et?

n°723522
nagadoudi
T nagadoudi, rentre ta finette
Posté le 12-05-2004 à 16:27:38  profilanswer
 

à la base, je ne connais pas le contenu de mes variables (elles sont définies dans des fonctions plutôt complexes)

n°723603
djdie
L'heure, c'est l'heure.
Posté le 12-05-2004 à 17:06:12  profilanswer
 

A priori c'est impossible, la fonction test n'est pas en mesure de connaître le nom de la variable dans la procédure appelante.

Code :
  1. function test($val, $name)
  2. {
  3.    echo "<p>La variable $name vaut '$val'</p>";
  4. }
  5. test($toto, "toto" );
  6. test($tata, "tata" );


Message édité par djdie le 12-05-2004 à 17:06:28
n°723707
nagadoudi
T nagadoudi, rentre ta finette
Posté le 12-05-2004 à 17:43:44  profilanswer
 

OK djdie, dommage...
 
Et avec le "&" de &$ma_var, est-ce qu'il n'y a pas moyen de bidouiller ?

n°723995
djdie
L'heure, c'est l'heure.
Posté le 12-05-2004 à 23:36:31  profilanswer
 

Non rien à voir, ça c'est si tu passes des variables par référence, mais tu n'as toujours aucun moyen de connaître le nom de la variable avant l'appel de la fonction (du moins je ne vois pas comment).
 
Ce que tu essaies de faire est par exemple possible en C avec des macros, mais cela n'existe pas en PHP...
 
Ceci dit si tout cela sert à déboguer regarde du côté de var_dump peut-être... C'est assez utile.

mood
Publicité
Posté le 12-05-2004 à 23:36:31  profilanswer
 

n°724021
Thierry Ch​atel
Posté le 13-05-2004 à 00:12:01  profilanswer
 

Peut-être qu'il y aurait moyen de passer seulement le nom de la variable, et d'essayer de récupérer la valeur avec un eval. Mais il faut faire d'abord un global. Ca peut marcher, je n'ai jamais essayé.
 
Un truc dans le genre :  
 

Code :
  1. function test($name)
  2.   {
  3.        eval "global \$$name; \$val=\$$name; ";
  4.        echo "<p>La variable $name vaut '$val'</p>";
  5.   }
  6.  
  7.   test("toto" );


---------------
Info-Camargue, le portail de la Camargue
n°724128
sielfried
Posté le 13-05-2004 à 07:44:52  profilanswer
 

Ceci marche :
 

Code :
  1. function affiche($var) {
  2. global $$var;
  3. echo 'La variable '.$var.' vaut '.$$var;
  4. }
  5. $mavar = "a";
  6. affiche("mavar" );


 
Edit : ça ne marchera que si $mavar est définie globalement, a priori.


Message édité par sielfried le 13-05-2004 à 07:49:26

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°724250
nagadoudi
T nagadoudi, rentre ta finette
Posté le 13-05-2004 à 09:46:01  profilanswer
 

OK, merci beaucoup. Les deux solutions marchent.
Voici ma fonction de débugage, à réutiliser comme bon vous semble :

/**
 * Affiche le contenu d'une variable (pour débugage, pratique pour les booléens et les tableaux).
 *
 * @param string $var le nom de la variable à tester (chaine)
 * @return void
 */
function echo_var($var) {
 global $$var;
 echo '
<div>';
 echo "<b>\$$var :</b> ";
 if(gettype($$var)=='boolean') {
  if($$var) echo '<span style="font-family:monospace;">TRUE</span></div>';
  else      echo '<span style="font-family:monospace;">FALSE</span></div>';
 }
 elseif(gettype($$var)=='NULL') {
  echo '<span style="font-family:monospace;">NULL</span> <i>ou indéfini</i></div>';
 }
 elseif(gettype($$var)=='integer' || gettype($$var)=='double' || gettype($$var)=='string') {
  echo '<span style="font-family:monospace;">'.$$var.'</span></div>';
 }
 else {
  echo '<pre style="margin:0 0 0 30px; border-left:1px #999 dotted; padding-left:5px;">';
  print_r($$var);
  echo '</pre></div>';
 }
}

n°724277
djdie
L'heure, c'est l'heure.
Posté le 13-05-2004 à 10:10:17  profilanswer
 

oui bon ça évidemment ça marche, mais alors si tu as partout des variables globales, avant de commencer à déboguer, commence par re-réfléchir à la structure de ton code !!!

n°724640
nagadoudi
T nagadoudi, rentre ta finette
Posté le 13-05-2004 à 13:49:22  profilanswer
 

Rectif : les deux solutions marchent selon la config du serveur PHP.
 
Sinon, il faut déclarer la var à tester en global dans la fonction de test (comme prévu dans le script), mais aussi dans la fonction appelante...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Afficher le nom d'une variable

 

Sujets relatifs
afficher une partie d'une image[php] Tordu : Afficher le SUM de plusieurs DECODE passés en variable ?
[C++/Windows] afficher une variable dans une messagebox[c++ builder] Comment afficher une variable dans un label ?
Afficher le nom d'une variable ??[ASM] Afficher un variable dw
Afficher la valeur décimale d'une variable de type byteASM : Afficher une variable a l'ecran
afficher le contenu d'une variable sous DOS[VB-Access] Afficher la valeur d'une variable dans une zone de texte
Plus de sujets relatifs à : Afficher le nom d'une variable


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR