Heim  >  Artikel  >  Backend-Entwicklung  >  php 中怎么取得变量名

php 中怎么取得变量名

WBOY
WBOYOriginal
2016-06-13 11:52:511871Durchsuche

php 中如何取得变量名?

本帖最后由 u010200485 于 2014-03-11 12:27:23 编辑 在下php小白,请教两个问题:

1.怎样取得变量的名字?
例如:
$var_name = 'var_value';
Q: 怎样取得 ‘var_name’?

2.可能跟第一个问题类似,
例如:
function func_name($argument_name) {
    $code;
    Q:怎样在函数内取得 ‘parameter_name'?
}
$parameter_name = 'parameter_value';
func_name($parameter_name);

问题可能有点绕但是是我现在碰到的问题,希望可以得到解答,先谢过了。
------解决方案--------------------
<br />$var_name = 'var_value';<br />function get_variable_name(&$var, $scope = NULL) {<br />if (NULL == $scope) {<br />    $scope = $GLOBALS;<br />}<br /> <br />    $tmp = $var;<br />    $var = "tmp_exists_" . mt_rand();<br />    $name = array_search($var, $scope, TRUE);<br />    $var = $tmp;<br />    return $name;<br />}<br />echo get_variable_name($var_name);//var_name<br />

取变量名做什么?这是小白为题么?
------解决方案--------------------
忘了贴地址
http://stackoverflow.com/questions/255312/how-to-get-a-variable-name-as-a-string-in-php
------解决方案--------------------
先有鸡还是先有蛋的问题。

第一个问题 1楼 已经解答。

$var = 'tmp_value_'.mt_rand();  
$name = array_search($var, $scope, true);

因为是根据值找已定义的变量,会存在相同变量值的情况。以上两句的作用就是解决这个问题的。
解决方法:
1.先将原来变量的值用一个临时变量保存
2.然后把变量值修改为唯一的值(就是不可能有重复的值),再search,这就会找到唯一的变量名。
3.把临时变量的值还原到原来变量

因为是用&$var,地址引用,因此修改变量值后,都可以找到

第二个问题,要做到的话,$argument_name只能用地址引用,例如这样就可以获取到 parameter_name
<br />function func_name(&$argument_name) {<br />    echo get_variable_name($argument_name);<br />}<br /><br />$parameter_name = 'parameter_value';<br />func_name($parameter_name);<br /><br />function get_variable_name(&$var, $scope=null){  <br />  <br />    $scope = $scope==null? $GLOBALS : $scope;<br />    $tmp = $var;  <br />      <br />    $var = 'tmp_value_'.mt_rand();  <br />    $name = array_search($var, $scope, true);<br />  <br />    $var = $tmp;  <br />    return $name;  <br />} <br /><br />


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn