Supposons que vous avez plusieurs grands tableaux de variables (qui sont généralement des chaînes), et que vous voulez changer la façon dont ils sont affichés sur certaines pages - par exemple en concaténant chacun d'eux avec $prefix
et $suffix
:Pouvez-vous obtenir un nom de variable sous forme de chaîne en PHP? (? Et si vous)
$arr = array($foo, $bar, $baz)
$foo_display = $prefix . $foo . $suffix
$bar_display = $prefix . $bar . $suffix
$baz_display = $prefix . $baz . $suffix
Je serais supposé à l'origine il y avoir une fonction qui comme une chaîne (appeler « varname() ») retourne le nom d'une variable, auquel cas le code pourrait ressembler à ceci:
foreach ($arr as &$value) {
${varname($value)."_display"} = $prefix . $value . $suffix
}
Mais je ne l'ai pas été capable de trouver une telle fonction, et les gens dans this similar thread semblaient penser que le concept entier était suspect.
PS: Je suis nouveau à la programmation, désolé si cela est une question stupide :)
duplication possible de [Comment obtenir un nom de variable sous forme de chaîne en PHP?] (Http: // stackoverflow.com/questions/255312/comment-obtenir-un-nom-variable-comme-une-chaîne-dans-php) –
Ce n'est pas un doublon - c'est un cas d'utilisation entièrement différent. Cette affiche et moi-même considérons la même stratégie (obtenir des noms de variables comme des chaînes), mais je demande également des commentaires sur la question de savoir si une stratégie différente est tout à fait appropriée à ce que j'essaie d'accomplir. – Zach
Aucun moyen fiable. Si vous le voulez vraiment, vous pouvez essayer de faire de $ value un 'SplString' (php 5.4) et utiliser la magie de __toString et debug_backtrace() pour en déduire un nom de variable d'origine. Cependant, votre cas a le problème supplémentaire d'utiliser "$ value". Lequel, s'il y avait une telle fonction de langage, serait ce qu'une recherche varname() devrait retourner; malgré la référence. Donc, sujet intéressant mais peu d'espoir pour une solution. Allez avec 'new StringWrapper ($ str," name ")' si c'est une nécessité d'application. – mario