JeuWeb - Crée ton jeu par navigateur
Récupérer le nom d'une variable - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Récupérer le nom d'une variable (/showthread.php?tid=4974)

Pages : 1 2 3 4


Récupérer le nom d'une variable - Argorate - 05-07-2010

Bonsoir ou bon matin,

j'aurais besoin de savoir s'il existe une fonction php permetant de récupérer le nom d'une variable php? (un peu a la maniere d'un "array_keys" pour les tableaux)

exemple:

Code PHP :
<?php 
function maFonction(&$variable)
{
return
varName($variable);
}

maFonction($toto); //retourne 'toto';

merci.


RE: récupéré le nom d'une $variable php? - Allwise - 05-07-2010

Salut,

Si t'es dans une fonction, la variable aura toujours le nom que tu lui donnes dans la signature, 'fin j'crois. Tu peux regarder du côté des variables variables, sinon tu cherches à faire quoi au juste ?


RE: récupéré le nom d'une $variable php? - atra27 - 05-07-2010

Code PHP :
<?php
function vname(&$var, $scope=false, $prefix='unique', $suffix='value')
{
if(
$scope) $vals = $scope;
else
$vals = $GLOBALS;
$old = $var;
$var = $new = $prefix.rand().$suffix;
$vname = FALSE;
foreach(
$vals as $key => $val) {
if(
$val === $new) $vname = $key;
}
$var = $old;
return
$vname;
}
?>

Utilisation:
Code PHP :
<?php
$my_global_variable
= "My global string.";
echo
vname($my_global_variable); // Outputs: my_global_variable
?>

Le code n'est pas de moi mais marche sur mon install de php...
Par contre avec l'utilisation de foreach je pense que niveau ressources sa ne doit pas être super conseillé étant donné qu'il parcours toutes les variables...


Edit: Sais tu que $var[$var1] est plus rapide et plus simple qu'un ${"var{$var1}"} ???


RE: récupéré le nom d'une $variable php? - Anthor - 05-07-2010

J'ai beaucoup de mal à en saisir l'intérêt !
Tu pourrais nous éclairer ?


RE: récupéré le nom d'une $variable php? - Argorate - 05-07-2010

@Anthor, Allwise :
je vous montre le test que j'ai fais:
Code PHP :
<?php 
function vname(&$var, $scope=false, $prefix='unique', $suffix='value')
{
if(
$scope) $vals = $scope;
else
$vals = $GLOBALS;
$old = $var;
$var = $new = $prefix.rand().$suffix;
$vname = FALSE;
foreach(
$vals as $key => $val) {
if(
$val === $new) $vname = $key;
}
$var = $old;
return
$vname;
}

function
test(&$variable)
{
$tab[vname($variable)] = $variable;
return
$tab;
}
$toto=2;
$tab = test($toto);
var_dump($tab);

c'est pour pouvoir créer un tableau qui contient la variable passé par refference, mais dans l'indice portant le nom de la variable...

Bref la question n'est pas vraiment le pourquoi :p

atra27:
c'est marrant mais j'ai trouvé un exemple voisin, mais qui retourner le nom de la variable coté fonction et non le nom coté appel de la fonction, ce qui n'était donc pas bon. Là ça semble avoir marché!

(05-07-2010, 10:48 AM)atra27 a écrit : Edit: Sais tu que $var[$var1] est plus rapide et plus simple qu'un ${"var{$var1}"} ???
Non, d'où sors-tu ça? Mais de toute manière je prefere utiliser les tableaux, c'est plus rapide a écrire et plus lisible dans la code. Donc c'est ok ^^

Merci.


RE: récupéré le nom d'une $variable php? - atra27 - 05-07-2010

Je suis tombé la dessus:
Code PHP :
<?php
$champ_cache
= $_POST['champ_cache'];

function
insert() {
// code
}

function
delete() {
// code
}
function
update() {
// code
}

function
select() {
// code
}

if (
$champ_cache == 'insert' || $champ_cache == 'delete' || $champ_cache == 'update' || $champ_cache == 'select') {
$champ_cache();
}
?>
Sa montre que l'on peut exécuter une fonction qui porte le nom contenu dans une variable (penser a verrifier sinon ça peut aussi être une faille de sécu importante...)

C'est hallucinant comment php gère des quantités de trucs qu'un programmeur en C ne se permettrai même pas d'imaginer! Sa prouve encore une fois que php est la pour palier a toutes les erreurs de conceptions possibles...


RE: récupéré le nom d'une $variable php? - wildd - 05-07-2010

>>c'est pour pouvoir créer un tableau qui contient la variable passé par refference, mais dans l'indice portant le nom de la variable...

y a une fonction php pour ça ça s'appelle compact() ( http://php.net/compact )


RE: récupéré le nom d'une $variable php? - Anthor - 05-07-2010

Citation :Bref la question n'est pas vraiment le pourquoi 10

Bien sûr que si, tu cherches peut-être encore une solution tordue pour rien du tout ^^


RE: récupéré le nom d'une $variable php? - Argorate - 06-07-2010

atra27 :
Personnellement je connais cette methode et je les deja utilisé de nombreuse fois, rien de choquant a pouvoir faire un appel dynamique au contraire ça peut etre très pratique! Wink
(exemple d'utilisation que j'ai posté il y a quelque temps deja sur le fofo: http://www.jeuweb.org/showthread.php?tid=5115&pid=64617#pid64617 )

cependant tu ne m'as pas donné tes sources pour ton premier message^^


wildd : Eheh! je ne connaissais pas cette fonction, mais en l'occurence pas de chance, ça n'aurait pas pu m'aider car je te le donne en mille, je travaillé avec les tableaux super globaux (dont il est precisé que l'a fonction n'est pas compatible avec...)


RE: récupéré le nom d'une $variable php? - Cartman34 - 06-07-2010

Le code que tu as posté ici, lis les variables globales à la recherche de la variable que tu lui as donné en fonction de sa référence.
Mais je doute que ça fonctionne correctement dans une fonction et c'est assez vilain. Cependant, je pense que c'est la seule manière.