Afficher le nom de la variable

Signaler
-
 Utilisateur anonyme -
bonjour

soit le code
<?php
$a=5;
?>

comment afficher et récupérer le NOM de la variable pour ecrire la variable a est 5 (sans mettre "a" en dur !!)

merci

6 réponses

Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
16
Salut,

Ce n'est pas possible(à ma connaissance en tout cas). La raison est simple : les noms de variables sont définies par l'utilisateur (toi, donc). Tu es donc réputé connaître les variables que tu utilises. De plus, un nom de variable n'est qu'une représentation de haut niveau d'un pointeur mémoire manipulé par PHP (ou un truc dans l'genre).
S'il s'agit de variables externes (formulaire, url, cookie, etc) manipuler des variables dont on ignore jusqu'au nom est une terrible faille de sécurité.

Concrètement, la solution pour contrôler tes variables en manipulant leur nom (dans une variable ?) est d'utiliser des variables dynamiques.
<?php
$var = 'a';
$$var = 5;
echo $a; // Affichera 5
?>


Cf la doc sur les variables dynamiques : http://fr2.php.net/manual/fr/language.variables.external.php

Jette un oeil par là des fois que ça puisse t'intéresser : http://fr.php.net/get-defined-vars


--
Neige

N'hésitez pas à lire la doc

C'est bien ce qui me semblait, c'est le concept $$a que j'ai du mal a appréhender.... Je vais relire la doc à ce sujet
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
16
Ouais, ça perturbe un peu au début...
Imagine simplement que tu remplaces $a par sa valeur dans $$a. Si $a 'b', alors $$a $b.

il sort d'où le $b?
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
16
Il sort de la valeur de $a. Si $a = 'b', alors $$a = $b

Sans se soucier que la variable $b ait été définie ou non, PHP va considérer que $$a = $b. Ensuite, il évalue $b (qui existe ou non).
Ca revient vraiment à remplacer $a par son contenu.

$ indique qu'il s'agit d'une variable et est suivi directement du nom de la variable qui est une chaine de caractères. Si derrière ce premier $ il y en a un autre, alors celui-ci, suivi d'une chaine de caractères indique la variable à évaluer.
Dans $$a, PHP commence par évaluer $a. S'il s'agit d'une chaine de caractères, il la place derrière le premier $ pour en faire une nouvelle variable.
Ce n'est qu'alors qu'il va s'intéresser au fait que cette variable, dont le nom est lui-même variable, soit définie ou non, accessible ou non, etc.

Merci de l'explication claire, je comprends lieux la logique...